1

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

但是当它是一个字符串时排序不起作用

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

当列的类型为 double ex 时,排序确实有效。dt.Columns.Add("ChargeField", System.Type.GetType("System.Double"))

但它不是货币格式。

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

4

1 回答 1

4

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

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。此 MSDN 页面以及此 MSDN 论坛帖子此 ASP.net 论坛帖子可能会有所帮助

<Columns>
    <asp:BoundField DataField="ChargeField" DataFormatString = "{0:c}" />
</Columns>
于 2013-07-23T01:27:07.060 回答