应用于gridview中的boundfields的格式不起作用

时间:2010-09-02 18:01:36

标签: gridview string-formatting boundfield dataformat

我在gridview中有以下列,一个是日期,另一个是美元金额。我应用了格式并将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

有什么建议吗?

1 个答案:

答案 0 :(得分: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