2

我在网格视图中有以下列,一个是日期,另一个是美元金额。我应用了格式并将 HtmlEncode 属性设置为 false,但是这些值仍然未格式化:

<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

有什么建议么?

4

1 回答 1

6

我发现了问题所在。我无法从 gridview 格式化 boundfields,因为它的数据类型设置为字符串。我用来填充 gridview 的数据集来自 Web 服务,数据集中的所有字段都以字符串形式返回,这就是为什么 gridview 中的 DataFormatString 属性不起作用的原因。

修复:在从 Web 服务获取数据集之后,在将其用作网格视图的数据源之前,我最终更改了这些字段的数据类型,一旦我这样做了,gridview 中的 DataFormatString 属性按预期工作:

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
于 2010-09-10T17:54:24.283 回答