我想在asp.net gridview中将电话号码显示为掩码格式(999)999-9999。
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# (Eval("OrgContactPhone").ToString().Length>50)?Eval("OrgContactPhone").ToString().Substring(0,50):Eval("OrgContactPhone") %>'></asp:Label>
</ItemTemplate>
所以有两个问题。
感谢。
答案 0 :(得分:4)
这是我写的link to a similar (previous) answer。
最终你想要一个代码隐藏函数来返回你的格式化文本。此功能允许您对所有电话号码进行统一格式化。如果您需要更改格式,只需更改一个方法即可。
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>
答案 1 :(得分: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>