0

我有一张软件表、一张系统表和一张已安装软件表(ID、SysID、SoftID)。我想将所有软件加载到 DataGridView,并且我的 DataGridView 有 3 列(ID、SoftName、已安装),ID 和 SoftName 是从 Softwares 加载的,installed 是一个复选框,当 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)。

我怎样才能让它工作?

4

2 回答 2

0

啊忽略我的评论,我刚刚注意到这一行:

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

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

于 2012-07-21T08:13:34.593 回答
0

将单元格设置为真值:

        foreach (DataGridViewRow row in DGVIS.Rows)
        {
            if ((int)row.Cells["IDo"].Value == ins.SoftID)
            {
                row.Cells["installed"].Value = true;
                break;
            }
        }
于 2012-07-21T08:13:00.250 回答