代码之家  ›  专栏  ›  技术社区  ›  Ricardo Sanchez

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

  •  2
  • Ricardo Sanchez  · 技术社区  · 14 年前

    我在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中的显示方式:

    “总”值如下: 销售日期值如下: 2010年9月2日上午8:59:00

    有什么建议吗?

    1 回复  |  直到 14 年前
        1
  •  6
  •   Ricardo Sanchez    14 年前

    我发现了问题所在。我无法格式化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
    
    推荐文章