C# 基于Datatable在数据网格视图中标记复选框

C# 基于Datatable在数据网格视图中标记复选框,c#,datagridview,datagridviewcheckboxcell,C#,Datagridview,Datagridviewcheckboxcell,我有一个数据网格视图dataGridView1,它与数据表dt1绑定 数据表dt1包含以下数据: name | status -----+------- abc | 0 abd | 1 abc | 0 abc | 1 abc | 1 我在DataGridView中设置了一个复选框,我希望复选框的默认值为选中状态=1 DataGridViewCheckBoxColumn checkColumn = new DataGridViewCheckBoxColumn();

我有一个数据网格视图
dataGridView1
,它与数据表
dt1
绑定

数据表dt1包含以下数据:

name | status
-----+-------
abc  |   0
abd  |   1
abc  |   0
abc  |   1
abc  |   1
我在DataGridView中设置了一个复选框,我希望复选框的默认值为选中状态=1

DataGridViewCheckBoxColumn checkColumn = new DataGridViewCheckBoxColumn();
checkColumn.Name = "X";
checkColumn.HeaderText = "X";

dataGridView1.Columns.Add(checkColumn);

for (int x = 0; x < countSubCategory; x++)
{
    if (dt1.Rows[x].ItemArray[1].ToString() == "1")
    {
          // here I want to check the checkbox but I don't know what to write here
          checkColumn.Checked= true;
    }

    else { 
        checkColumn.Value = false; 
    }
} 
DataGridViewCheckBoxColumn checkColumn=new DataGridViewCheckBoxColumn();
选中column.Name=“X”;
选中column.HeaderText=“X”;
dataGridView1.Columns.Add(checkColumn);
对于(int x=0;x

checkColumn.Checked= true;


但最好是在数据上工作,而不是在UI上

可以向DataTable中添加列表达式

dt1.Columns.Add(new DataColumn("X", typeof(bool), "status = 1"));
这一行,替换了问题上的所有代码


有时,更简单有效的方法是更改SQL语句

反而

SELECT id, status


如果数据类型为布尔值,则数据网格在绑定后应根据值显示“已选中”或“未选中”。@Mikeshwartz否,它是int数据类型。是否可以生成布尔值?@Mikeshwartz,但我正在dataGridView中单独添加复选框列。{dataGridView1.Columns.Add(checkColumn);}它不是Datatable的一部分。是否可以使复选框列成为datatable的一部分?其给我的错误:无法将类型“bool”隐式转换为“System.Windows.Forms.DataGridViewCell”现在它给我的错误是:无法将带[]的索引应用于类型为“System.Data.datatable”dt1的表达式是否为datatable?DataGrid是如何链接到数据的?我得到了.value=true的部分,但赋值是用旧值更改的,而不是新值。有什么建议吗?@RichardJune
使用旧值
你是什么意思?
SELECT id, status
SELECT id, IIF(status = 1, true, false) AS statusBool