string.Format("{0:(###) ###-####}" を使用して、フォーマットされた電話番号を DetailsView に表示します。電話番号の例は次のとおりです。
(516) 123-4567
<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>
電話番号が正確に 10 桁の場合に適切にフォーマットされ、ユーザーが電話番号を編集できるようになります。問題は、ユーザーが電話番号を消去して [更新] ボタンをクリックしようとした場合です。データベース テーブルの列で null が許可されていても、ユーザーが TextBox に何かを入力するまで、データは保存されません。
コーディングを間違えましたか? ユーザーが [更新] ボタンをクリックする前に電話の TextBox をクリアした場合に備えて、このような方法で設定したいと考えています。