我有一个绑定到List的DataGirdView
。
我想在CheckBox
的某个单元格上添加DataGridViewCheckBoxCell
,但这不是我的datagridview上显示的控制器。以下是我的代码:
class ColumnNames
{
public string Check { get; set; }
public string Index { get; set; }
public string SubIndex { get; set; }
public string Name { get; set; }
public string Value { get; set; }
public ColumnNames(
string Check,
string Index,
string SubIndex,
string Name,
string Value
)
{
this.Check = Check;
this.Index = Index;
this.SubIndex = SubIndex;
this.Name = Name;
this.Value = Value;
}
}
itemsList.Add(new ColumnNames(Check, Index, SubIndex, Name, DataType));
datagridview.DataSource = itemsList;
datagridview.Rows[0].ReadOnly = true;
datagridview.Rows[0].Cells[0] = new DataGridViewCheckBoxCell();
datagridview.Rows[0].Cells[0].Value = false;
当我运行此代码时,我只在cell [0]上获得字符串'false'。 我使用断点监视此单元格,此单元格为“Datagirdviewcheckboxcell”,但此处没有复选框控制器。 我怎么解决这个问题?谢谢!
答案 0 :(得分:1)
我认为你在这一行设置new ColumnNames(Check, Index, SubIndex, Name, DataType)
检查为"字符串"有价值"假"。
将ColumnNames更改为:
...
public bool Check { get; set; }
...
public ColumnNames(bool Check, ...)
{
this.Check = Check;
...
}
...
然后只是:
List<ColumnNames> itemsList = new List<ColumnNames>();
itemsList.Add(new ColumnNames(true,"Index", "SubIndex", "Name", "DataType"));
dataGridView1.DataSource = itemsList;
结果:
无需:datagridview.Rows[0].Cells[0] = new DataGridViewCheckBoxCell();
如果您需要在一列中使用不同类型的单元格,则必须使用自定义DataGridViewColumn。
根据这个答案:creating a custom column type? 您有两个教程:
然后根据值类型在您的类和自定义实现绘制单元格中坚持使用Check属性的对象类型。
类似的东西:
switch(Check.GetType()){
case typeof(Boolean): /* draw CheckBox */ break;
default: /* draw string */ break; //you can keep string in default with all other types.
}