【发布时间】:2016-06-24 17:27:49
【问题描述】:
我有一个 IEnumerable 列表,并且这个列表在运行时提供了一个 datagridview。
i.e. datagridviewBindingSource.DataSource = myList;
datagridview.DataSource = datagridviewBindingSource;
在此列表中,所有列都是“字符串”类型,但有两列 “状态” 和 “区域” 包含 “字符”类型的值.
Status 可以有值 = { 'O' , 'C'} (Open and Close) , Area 可以 有值 = {'I','F','R'} (In-Process, Final, Receive}
现在,在运行时,我想显示:
打开而不是 O
关闭而不是 C
进行中而不是我
等等……
我正在这样做:
foreach (DataGridViewColumn c in dataGridView1.Columns)
{
if (c.HeaderText == "Status")
{
MessageBox.Show(c.ValueType.ToString());
c.ValueType = typeof(string);
}
}
foreach (DataGridViewRow r in dataGridView1.Rows)
{
foreach (DataGridViewCell c in r.Cells)
{
if (c.Value == null)
{
c.Value = "";
}
if (c.Value.GetType() == typeof(char))
{
//c.ValueType = typeof(string);
if (c.Value.ToString() == "O")
{
c.Value = "Open";
}
}
}
}
感谢任何帮助。
我正在使用 Dapper 来查询我的数据库,并且在类中的“区域”和“状态”列被定义为 char,就像在数据库中一样。因此,当应用程序分布在客户端机器上时更改它们的数据类型对我来说不是一个选择。我只想在“前端”逻辑中处理它。
【问题讨论】:
-
foreach循环包含在哪个方法中? -
包含这段代码的方法(
GetData())用于从数据库中获取数据,然后对其进行过滤等,并从构造函数中调用。 -
在进入for循环之前,如何保证
dataGridView1有数据(例如“O”)? -
在解决此问题时,我确定了这一点。 Datagrid 确实有数据。我想这就是为什么异常说
System.String无法转换为System.Char,因为它无法处理数据。
标签: c# datagridviewcolumn