DataGridView格式货币与动态字符串数据

时间:2014-03-27 11:05:05

标签: c# .net winforms datagridview

我有一个DataGridView,其中AutoGenerateColumns = true 我从CSV填充数据(所以它们都是字符串,而不是十进制)

DataTable dt = CsvToDataTable(masterlistCsvPath); // My function, returns a DataTable
//dt.Columns['Price'].DataType = Type.GetType("System.Decimal"); // Exception: Cannot change DataType of a column once it has data.
dgvMasterList.DataSource = dt;

如何将价格格式化为货币
例如。 “38.5”→“38.50美元”或“38.50”

这不起作用(它什么都不做):

dgvMasterList.Columns["Price"].ValueType = Type.GetType("System.Decimal");
dgvMasterList.Columns["Price"].DefaultCellStyle.Format = "C";

这是有效的(只是为了证明我正确地称它)

dgvMasterList.Columns["Price"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;

另一个相关问题:
如何在列中添加百分比符号?
例如。 “5”→“5%”

1 个答案:

答案 0 :(得分:0)

您无法将字符串值格式化为货币格式。但是,您可以将csv中的模式加载到datatable中,并根据需要更改每个字段的数据类型,然后将其作为数据源传递给datagridviewcontrol。现在,您可以将货币格式分配给价格列,作为" C"。