データベースからのデータが取り込まれる datagridview があります。最後の 2 つの列はコンボボックスとボタンです。
ちらつきを防ぐためRows.AddRange
に、すべての行を一度に追加するために使用します (手順全体はバックグラウンドワーカーにあります)。
私の質問は、ドロップダウン ボックスに値を追加する方法です。アイテムは単なる文字列のリストであるため、データソースにする必要はありません。
DataTable dt = db.fill(query, dbpars);
DataGridViewComboBoxCell cbox = new DataGridViewComboBoxCell();
cbox.Items.Add("--Please Select--");
cbox.Items.Add("Generate");
cbox.Items.Add("Ignore");
List<DataGridViewRow> rowList = new List<DataGridViewRow>();
foreach (DataRow row in dt.Rows)
{
DataGridViewRow drow = new DataGridViewRow();
drow.CreateCells(dgvClientWork);
drow.Cells[0].Value = row[0];
drow.Cells[1].Value = row[1];
drow.Cells[2].Value = row[2];
drow.Cells[3].Value = row[3];
drow.Cells[4].Value = row[4];
drow.Cells[5].Value = row[5];
//((DataGridViewComboBoxColumn)dgvClientWork.Columns[6]).Items.Add("2");
//var td = new DataGridViewComboBoxCell();
//drow.Cells[6] = td;
//((DataGridViewComboBoxCell) drow.Cells[6]).Items.Add("WFT");
DataGridViewComboBoxCell td = (DataGridViewComboBoxCell)dgvClientWork.Rows[0].Cells[6];
td.Items.Add("--Please Select--");
td.Items.Add("Generate");
td.Items.Add("Ignore");
//td.Items.AddRange(new object[]{"--Please Select--", "Generate", "Ignore"});
//var t = (DataGridViewComboBoxCell)cbox.Clone();
//drow.Cells.Add(t);
//drow.Cells[6] = t;
//drow.Cells[6].Value = "--Please Select--";
/*drow.Cells[7].Value = btn;*/
rowList.Add(drow);
}
Action action = () => dgvClientWork.Rows.AddRange(rowList.ToArray());
dgvClientWork.Invoke(action);
ご覧のとおり、いくつかのことを試みましたが、コンボボックスは常に空白です。