在DetailsView中,其中一个控件是名为PrimaryPhone的TextBox。
使用ASP:文字控件中的string.Format格式化PrimaryPhone。
数据存储在数据库中:
9781231234
使用Iif函数处理10位数字的格式化。
<asp:TemplateField HeaderText="Primary Phone:" SortExpression="PrimaryPhone">
<EditItemTemplate>
<asp:TextBox ID="TextBoxPrimaryPhoneEdit" runat="server" Text='<%# Bind("PrimaryPhone") %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBoxPrimaryPhoneInsert" runat="server" Text='<%# Bind("PrimaryPhone") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Literal ID="PrimaryPhoneLiteral" runat="server"
Text='<%# iif(Len(Eval("PrimaryPhone"))=10,
string.Format("{0:(###) ###-####}", Int64.Parse(Eval("PrimaryPhone").ToString())),
Eval("PrimaryPhone")) %>' />
</ItemTemplate>
<ItemStyle ForeColor="Blue" />
</asp:TemplateField>
我们希望从VB.Net代码隐藏文件格式化PrimaryPhone,而不是Iif函数,因为电话号码可能是:
10 digits
7 digits
部分电话号码也不见了。
我们希望根据输入PrimaryPhone DetailsView TextBox的数字长度对其进行格式化。我们希望为此使用Case语句。
当电话号码不是10位或7位数时,是否也可以在EditItemTemplate和InsertItemTemplate中验证电话号码的输入并显示Ajax验证标注扩展器?
您能否显示从代码隐藏文件格式化PrimaryPhone所需的编码?
答案 0 :(得分:2)
在CodeBehind文件中编写公共静态函数,并从aspx页面调用它,传递电话值。
(我在这里使用C#代码,但你应该明白这一点)
public static string FormatPhoneNumber(string phoneNumber)
{
// do your conditional formatting here
return result;
}
并在你的ItemTemplate中:
<ItemTemplate>
<asp:Literal ID="PrimaryPhoneLiteral" runat="server"
Text='<%# FormatPhoneNumber(Eval("PrimaryPhone").ToString()) %>' />
</ItemTemplate>