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をフォーマットするために必要なコーディングを示すことができますか?