데이터베이스의 데이터로 채워지는 datagridview가 있으며 마지막 두 열은 콤보 상자와 버튼입니다. addrange를 사용하여 혼합 된 열 유형으로 datagridviewrow 추가
내가 한 번에 모든 행을 추가Rows.AddRange
를 사용 깜박임을 방지하기 위해
내 질문에 내가 dropdownbox에 값을 추가하려면 어떻게 (전체 절차는 BackgroundWorker에에). 항목은 훔쳐보기 목록 일 뿐이므로 데이터 소스를 지정할 필요가 없습니다.
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);
나는 여러 가지 시도를했지만 콤보 박스는 항상 비어 있습니다.
* 깜박임을 방지하기 위해'Rows.AddRange' *를 사용합니다. ['BeginUpdate'] (http://stackoverflow.com/q/5817632/1997232)도 사용할 수 있습니다. – Sinatr
@Sinatr 그 덕분에, 슬프게도 내가 얻는 문제를 해결하지 못할 것이다 : ( – Neo
그 이유는 내가 당신을 위해 답변을 게시하지 않습니다;) 아마 당신은 행을 추가하지 않습니다 (올바르게 : http : // stackoverflow. co.kr/q/10063770/1997232)? – Sinatr