1

在 DetailsView 中,其中一个控件是名为 PrimaryPhone 的 TextBox。

PrimaryPhone 使用 ASP:literal 控件中的 string.Format 进行格式化。

数据在数据库中是这样存储的:

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 语句。

是否也可以验证 EditItemTemplate 和 InsertItemTemplate 中的电话号码条目,并在电话号码不是 10 位或 7 位数字时显示 Ajax 验证标注扩展程序?

您能否显示从代码隐藏文件中格式化 PrimaryPhone 所需的编码?

4

1 回答 1

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>
于 2012-10-06T14:51:00.107 回答