DataGridView CheckBox未通过编程方式进行检查

时间:2012-07-21 07:41:30

标签: c# winforms

我有一个软件表,一个系统表和一个InstalledSoftwares表(ID,SysID,SoftID)。我想将所有软件加载到DataGridView,我的DataGridView有3列(ID,SoftName,已安装),ID和SoftName是从Softwares加载的,安装的是一个chekbox,我希望在InstalledSoftwares表中存在记录时检查它为软件。已安装的列未绑定且其TrueValue设置为1,我将其填充到ForEach块中,如:

DGVIS.DataSource = Reports.installedSoftwares.Softwares();
IQueryable<InstalledSoftware> Installed = Reports.installedSoftwares.InstalledOn(SystemID);
        foreach (var ins in Installed)
        {
            foreach (DataGridViewRow row in DGVIS.Rows)
            {
                if ((int)row.Cells["IDo"].Value == ins.SoftID)
                {
                    row.Cells["installed"].Value = 1;
                    break;
                }
            }
        }

但是当我运行应用程序时,所有的复选框都未选中,当我跟踪它时,已安装的行获取值1但是当foreach完成时,每个复选框都取消选中并且值为0(FalseValue设置为0)。

我怎样才能让它发挥作用?

2 个答案:

答案 0 :(得分:0)

将单元格设置为true值:

        foreach (DataGridViewRow row in DGVIS.Rows)
        {
            if ((int)row.Cells["IDo"].Value == ins.SoftID)
            {
                row.Cells["installed"].Value = true;
                break;
            }
        }

答案 1 :(得分:0)

我不理会我的评论,我只是注意到这一行:

DGVIS.DataSource = Reports.installedSoftwares.Softwares();

您需要修改数据源本身才能反映所做的更改。