2010-09-02 3 views
2

У меня есть следующие столбцы в gridview, один - дата, а другой - сумма в долларах. Я применил форматирование и установить свойство HTMLEncode ложь, однако значения еще придумать неотформатированные:Форматирование, применяемое к связанным полям в gridview, не работает

<asp:BoundField DataField="Total" HeaderText="Total" ReadOnly="true" HtmlEncode="False" DataFormatString="{0:C}" /> 
<asp:BoundField DataField="Sale_Date" HeaderText="Sale Date" ReadOnly="true" HtmlEncode="False" DataFormatString = "{0:d}" /> 

Это, как появляются эти значения в GridView:

«Итого» значение придумывает, как: 190,0000 значение Дата продажи придумывает как: 9/2/2010 8:59:00 AM

Любые предложения?

ответ

5

Я нашел, в чем проблема. Мне не удалось отформатировать граничные поля из gridview, потому что его тип данных был установлен в строку. Набор данных, который я использую для заполнения gridview, поступает из веб-службы, все поля в наборе данных возвращаются как строки, поэтому свойство DataFormatString в gridview не работает.

Исправление: Я в конечном итоге изменить тип данных этих полей после того как я получил набор данных из веб-службы и, прежде чем использовать его в качестве источника данных в виде сетки, как только я сделал это, свойство DataFormatString в Элемент GridView работал, как и ожидалось:

ds = _ws.GetOrderList(brokerId, type, pageSize, pageNum, sort, searchBy, searchFor); 
ds2 = ds.Clone(); 

ds2.Tables[0].Columns["Price"].DataType = System.Type.GetType("System.Double"); 
ds2.Tables[0].Columns["Total"].DataType = System.Type.GetType("System.Double"); 
ds2.Tables[0].Columns["Sale_Date"].DataType = System.Type.GetType("System.DateTime"); 

foreach (DataRow row in ds.Tables[0].Rows) 
    { 
    ds2.Tables[0].ImportRow(row); 
    } 
return ds2 
+2

Это установил ее для меня, но вместо того, чтобы использовать 'System.Type.GetType ("System.Double")' Я рекомендую использовать 'TypeOf (дважды)' –