【问题标题】:Formatting a datatable's column to show currency格式化数据表的列以显示货币
【发布时间】:2013-07-22 22:53:08
【问题描述】:

我正在将数据表输入到网格视图中,以显示过去一年的几种不同费用。我希望网格视图中的费用以货币格式显示,但我还希望能够在单击标题时对列进行排序。
如果列是字符串类型,我可以轻松地将格式变为货币 前任。 将 dt 暗淡为 DataTable dt.Columns.Add("ChargeField", System.Type.GetType("System.String"))

但是当它是一个字符串时排序不正确

我使用此代码进行排序 dt.DefaultView.Sort = ChargeField & " " & ASC

当列是双精度类型时,排序确实有效 前任。 dt.Columns.Add("ChargeField", System.Type.GetType("System.Double"))

但它不是货币格式。

有没有办法让数据表/Gridview 有一个双/十进制列,将其值显示为货币?如果没有,有没有更好的方法来完成我想做的事情?

【问题讨论】:

    标签: vb.net gridview datatable dynamic-columns currency-formatting


    【解决方案1】:

    将列添加为双列(就像您在帖子中所说的那样),以便它们正确排序。

    dt.Columns.Add("ChargeField ", System.Type.GetType("System.Double"))
    

    然后您可以将数据网格视图中的所有列格式化为货币:

    DataGridView1.DataSource=dt
    DataGridView1.DefaultCellStyle.Format = "c"
    

    或者,您可以对单个列执行此操作:

    DataGridView1.DataSource=dt
    DataGridView1.Columns("ChargeField").DefaultCellStyle.Format = "c"
    

    对于 Gridview,您可以使用 DataFormatString。 This MSDN page 以及 this MSDN forum postthis ASP.net forum post 可能会有所帮助

    <Columns>
        <asp:BoundField DataField="ChargeField" DataFormatString = "{0:c}" />
    </Columns>
    

    【讨论】:

    • 我的 gridview 在其列中没有字段 DefaultCellStyle。很可能是因为它只是一个gridview,而不是datagrid 视图,但我似乎无法将我的gridview 转换为datagridview。顺便说一句,我正在使用 Microsoft Visual Studio 2010。
    • @ThomasHolladay 编辑了我的答案以包含网格视图
    猜你喜欢
    • 2011-09-18
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多