C# 带有动态字符串数据的DataGridView格式货币

C# 带有动态字符串数据的DataGridView格式货币,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,我有一个带有AutoGenerateColumns=true的DataGridView。 我从CSV填充数据(因此它们都是字符串,而不是十进制) 如何将价格列格式化为货币? 例如“38.5”→ “$38.50”或“38.50” 这不起作用(它什么也不起作用): 这是有效的(只是为了证明我的说法是正确的) 另一个相关问题: 如何在列中添加百分比符号? 例如“5”→ “5%”无法将字符串值格式化为货币格式。但是,您可以将模式从csv加载到datatable中,并根据需要更改每个字段的数据类型,然后将

我有一个带有AutoGenerateColumns=true的
DataGridView

我从CSV填充数据(因此它们都是字符串,而不是十进制)

如何将价格列格式化为货币
例如“38.5”→ “$38.50”或“38.50”

这不起作用(它什么也不起作用):

这是有效的(只是为了证明我的说法是正确的)

另一个相关问题:
如何在列中添加百分比符号?

例如“5”→ “5%”

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

谢谢Nimesh。我添加了
dt.Columns['Price'].DataType=Type.GetType(“System.Decimal”)但它表示一旦列有数据,就不能更改其数据类型。是如何更改DataTable列的数据类型
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;
dgvMasterList.Columns["Price"].ValueType = Type.GetType("System.Decimal");
dgvMasterList.Columns["Price"].DefaultCellStyle.Format = "C";
dgvMasterList.Columns["Price"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;