0

ソフトウェアのテーブル、システムのテーブル、およびInstalledSoftwares(ID、SysID、SoftID)のテーブルがあります。すべてのソフトウェアをDataGridViewにロードしたいのですが、DataGridViewには3つの列(ID、SoftName、installed)があり、IDとSoftNameはソフトウェアからロードされます。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

セルに真の値を設定します。

        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 に答える
0

ああ、私のコメントを無視してください、私はちょうどこの行に気づきました:

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

加えられた変更を反映するには、データソース自体を変更する必要があります。

于 2012-07-21T08:13:34.593 に答える