我有一个软件表,一个系统表和一个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)。
我怎样才能让它发挥作用?
答案 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();
您需要修改数据源本身才能反映所做的更改。