2009-07-24 36 views
1

我在加上一欄,我的GridView控件代碼隱藏如下:ASP.NET的GridView列 - 格式的電話號碼

field = new BoundField(); 
field.HeaderText = "Phone Number"; 
field.DataField = "PhoneNumber"; 
field.HtmlEncode = false; 
field.DataFormatString = "{0:###-###-####}"; 
gridView.Columns.Add(field); 

然而,DataFormatString不工作,因爲******中國字段是一個字符串,而不是一個數字。無論如何要在DataFormatString中處理這個問題,還是在我到達這一點之前需要轉換數據類型?

回答

1

這很棘手。我可能會在網格的RowDataBound事件中'手動'格式化它。

+0

我沒有表現出我的全部代碼 - GridView也被實例化並從代碼隱藏加載。它是否還有RowDataBound事件? – 2009-07-25 01:02:06

0

的第一選擇是做在SQL

select cast(phone as int) as Phone,... 

如果沒有,請即列模板列,然後你會碰到這樣的:

<asp:TextBox ID="TextBox1" runat="server" 
Text='<%#(DataBinder.Eval(Container.DataItem, "Phone")== System.DBNull.Value)? 
"": 
String.Format("{0:(###) ###-####}", 
Convert.ToInt64(DataBinder.Eval(Container.DataItem, "Phone")))) 
%>'> 
</asp:TextBox> 
+0

我在代碼隱藏中添加了列。我可以在代碼隱藏中添加模板列嗎? – 2009-07-26 02:55:00