0

社会保障番号を表示するグリビューのテンプレート フィールド内に、データ バインドされたラベルがあります。現在、SSN は 123-45-6789 として表示されています。###-##-6789 のように表示されるように、最初の 5 桁を非表示にする必要があります。私がこれを達成する方法の例はありますか?

テンプレート フィールドのマークアップは次のとおりです。

    <asp:TemplateField HeaderText="Social Security Number" SortExpression="SSN">
         <ItemTemplate>
              <asp:Label ID="lblSSN" runat="server" Text='<%# Bind("SSN") %>'></asp:Label>
         </ItemTemplate>
    </asp:TemplateField>

復号化された SSN をグリッドに追加するコード ブロック:

    table.Columns.Add("SSN");
            foreach (DataRow row in table.Rows)
            {
                row["SSN"] = DecryptSSN(row["EncryptedSSN"].ToString());                   
                row.AcceptChanges();
            }

私はプログラミングが初めてなので、どんな助けでも大歓迎です。

4

3 に答える 3

4

ここにヘルパーメソッドがあります。

public static string GetMaskedNumber(string number)
{
    if (String.IsNullOrEmpty(number))
        return string.Empty;

    if (number.Length <= 5)
        return number;

    string last5 = number.Substring(number.Length - 5, 5);
    var maskedChars = new StringBuilder();
    for (int i = 0; i < number.Length - 5; i++)
    {
        maskedChars.Append(number[i] == '-' ? "-" : "#");
    }
    return maskedChars + last5;
}

結果

123-123-1234 から ###-##-1234

于 2013-04-02T21:05:35.210 に答える
0

これを使用して、その機能をテストするために使用できる以下のコードを置き換えrow["SSN"]て、値が次の場合にこのようなものが機能するようにします"123-45-6789"

foreach (DataRow row in table.Rows)
{
    var newMaskedSSN = DecryptSSN(row["EncryptedSSN"].ToString().Replace("-", string.Empty)); 
    if (newMaskedSSN.Length > 4)
    {
        Console.WriteLine(
            string.Concat(
               "".PadLeft(9, '*'), 
        newMaskedSSN.Substring(newMaskedSSN.Length - 4)));
        row["SSN"] = newMaskedSSN; 
        row.AcceptChanges();
    }
}

results: *****6789

于 2013-04-02T20:59:42.153 に答える
0

これはどうですか?

  select '###-##-'+right(ssn_coumn,4) as ssn  from your_table 
于 2013-04-02T21:17:20.543 に答える