格式化数据表列以显示货币

时间:2013-07-22 22:53:09

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

我正在将一个数据表输入到gridview中,以显示过去一年的几种不同费用。我希望gridview中的费用以货币格式显示,但我还希望能够在单击标题时对列进行排序。
  如果列的类型为字符串,我可以轻松地将格式设置为货币 恩。       dim dt as DataTable       dt.Columns.Add(“ChargeField”,System.Type.GetType(“System.String”))

但排序在字符串

时无法正常工作

我使用此代码排序 dt.DefaultView.Sort = ChargeField& “”& ASC

当列为double类时,排序确实有效 恩。 dt.Columns.Add(“ChargeField”,System.Type.GetType(“System.Double”))

但它不是货币格式。

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

1 个答案:

答案 0 :(得分:3)

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

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>