1

DetailsViewでは、コントロールの1つは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>

Iif関数の代わりに、電話番号が次のようになる可能性があるため、VB.NetコードビハインドファイルからPrimaryPhoneをフォーマットします。

10 digits
 7 digits

一部の電話番号も欠落しています。

PrimaryPhoneDetailsViewTextBoxに入力された数値の長さに基づいてフォーマットします。これにはCaseステートメントを使用することを検討しています。

EditItemTemplateとInsertItemTemplateの電話番号の入力を検証し、電話番号が10桁または7桁でない場合に、Ajax検証コールアウトエクステンダーを表示することもできますか?

コードビハインドファイルからPrimaryPhoneをフォーマットするために必要なコーディングを示すことができますか?

4

1 に答える 1

2

CodeBehindファイルにpublicstatic関数を記述し、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 に答える