ASP.NET GridView Column - форматирование номера телефона

Я добавляю столбец к моему gridview в code-behind следующим образом:

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

Однако DataFormatString не работает, поскольку поле PhoneNumber является строкой, а не числом. В любом случае нужно позаботиться об этом в DataFormatString или мне нужно преобразовать тип данных, прежде чем я доберусь до этой точки?

Ответы на вопрос(2)

Первый выбор - сделать это на 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>
 Mike Cole26 июл. 2009 г., 04:55
Я добавляю столбец в коде позади. Могу ли я добавить шаблонный столбец в коде позади?
 26 июл. 2009 г., 16:44
Мы говорим о добавлении шаблонного столбца в разметку .aspx. Увидетьauthors.aspalliance.com/aspxtreme/webforms/controls/…
Решение Вопроса

Это сложно. Я, вероятно, отформатировал бы это вручную. в событии RowDataBound сетки.

 Mike Cole25 июл. 2009 г., 03:02
Я не показывал весь свой код - GridView также создается и загружается из-за кода. У него все еще есть событие RowDataBound?

Ваш ответ на вопрос