2012-10-06 33 views
1

在DetailsView中,其中一個控件是一個名爲PrimaryPhone的文本框。在DetailsView中格式化並驗證asp:Literal控件

PrimaryPhone在ASP:文字控件中使用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 

一些電話號碼也丟失。

我們希望根據輸入到PrimaryPhone DetailsView文本框中的數字的長度對其進行格式化。我們希望爲此使用Case語句。

是否也可以在EditItemTemplate和InsertItemTemplate中驗證電話號碼的輸入,並在電話號碼不是10或7位時顯示Ajax驗證標註擴展程序?

您能否顯示從代碼隱藏文件格式化主要電話所需的編碼?

+0

你在同樣的問題,這是不是在這裏問兩個不同的問題非常適合StackOverflow。考慮爲驗證部分打開另一個問題。 – magnattic

+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> 
+0

感謝您的快速回復和代碼示例,以解決我們的問題。 –