1

電話番号をマスク形式(999)999-9999としてasp.netグリッドビューに表示したい。

<ItemTemplate>
    <asp:Label ID="Label4" runat="server" Text='<%# (Eval("OrgContactPhone").ToString().Length>50)?Eval("OrgContactPhone").ToString().Substring(0,50):Eval("OrgContactPhone") %>'></asp:Label>
</ItemTemplate>

だから2つの質問。

  1. それをフォーマットする方法は?string.formatが何かあることを知っています。しかし、次の質問を見てください。
  2. nullの場合、何も表示しません。

ありがとう。

4

2 に答える 2

4

これが私が書いた同様の(以前の)答えへのリンクです。

最終的には、フォーマットされたテキストを返すためのコードビハインド関数が必要です。この機能を使用すると、すべての電話番号で統一されたフォーマットを使用できます。また、フォーマットを変更する必要がある場合は、1つのメソッドを変更するだけです。

public object FormatPhoneNumber(string phoneNumber)
{
   // return nothing if the string is null
   if(String.IsNullOrEmpty(phoneNumber))
   {
       return "";    
   }

   // invalid phone number submitted
   if(phoneNumber.Length != 10)
   {
       throw new System.ArgumentException("Phone Number must contain 10 digits", "phoneNumber");
   }

   // probably want one more check to ensure the string contains numbers and not characters, but then again, hopefully that's handled on input validation.

   // if the int is valid, return the formatted text
   return string.Format("({0}) {1}-{2}",
          phoneNumber.Substring(0, 3),
          phoneNumber.Substring(3, 3),
          phoneNumber.Substring(6));
}

そして、あなたはこのようにあなたのaspxページからそれを呼びます。

<ItemTemplate>
    <asp:Label ID="Label4" runat="server" Text='<%# FormatPhoneNumber(Eval("OrgContactPhone").ToString()) %>'></asp:Label>
</ItemTemplate>
于 2012-05-15T19:18:28.473 に答える
0

電話番号の長さが50より大きいかどうかを確認するのはなぜですか?これは私が思う仕事をするでしょう。しかし、私はすべての行に対してint.Parseを実行するのは好きではありません...

<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# 
(Eval("OrgContactPhone") != null ? (((Eval("OrgContactPhone").ToString().Length>50) ? int.Parse(Eval("OrgContactPhone").Substring(0,10)).ToString("(###)###-####") : "") : (int.Parse(Eval("OrgContactPhone")).ToString("(###)###-####")) : ""%>'></asp:Label>
</ItemTemplate>
于 2012-05-15T19:37:04.670 に答える