我正在将一个数据表输入到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有一个双/十进制列,将其值显示为货币?如果没有,是否有更好的方法来完成我想要做的事情?
答案 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 post和this ASP.net forum post
<Columns>
<asp:BoundField DataField="ChargeField" DataFormatString = "{0:c}" />
</Columns>