我在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
有什么建议吗?
答案 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