这是一个代码,我从datatable中为datagridview添加值。 datagridview的“第一个”和“第三个”列已经填充了数据表中的数据。问题在于“第二”和“第四”列,因为我必须使它成为供用户选择的组合框。每个组合框的默认值是“columnDefaultValue”。如何从数据表添加combobox到datagridview?
string sqlMatchedData = "SELECT colA, colB, colC, colD " +
"FROM TB_LOOKUP_COLUMN "
ds = databaseManager.GetData(sqlMatchedData);
dataGridView1.ColumnCount = 4;
dataGridView1.Columns[0].Name = "First";
dataGridView1.Columns[1].Name = "Second";
dataGridView1.Columns[2].Name = "Third";
dataGridView1.Columns[3].Name = "Forth";
foreach(DataRow row in ds.Tables[0].Rows)
{
int n = dataGridView1.Rows.Add();
dataGridView1.Rows[n].Cells[0].Value = row[0].ToString();
dataGridView1.Rows[n].Cells[2].Value = row[3].ToString();
string columnDestination = row[1].ToString();
string columnType = row[2].ToString();
comboboxDestinationColumn(columnDefaultValue);
}
如何使用数据表创建组合框并将其绑定到特定单元格?
private void comboboxDestinationColumn(string columnDefaultValue)
{
string sqlLookupColumn = "SELECT colALookUp, colBLookUp FROM TB_LOOKUP_COLUMN";
DataSet dsColumn = databaseManager.GetData(sqlLookupColumn);
DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn();
combo.HeaderText = "Destination";
combo.Name = "combo";
foreach(DataRow row in dsColumn.Tables[0].Rows)
{
//populate combobox with data from datatable with defaul value columnDefaultValue
}
}
EDITED
我已经找到了组合框添加到datagridview的方式。但我仍然缺乏关于如何设置每个组合框的默认值基于变量的方式columnDefaultValue
private void comboboxDestinationColumn(string columnDefaultValue, int n)
{
string sqlLookupColumn = "SELECT colALookUp, colBLookUp FROM TB_LOOKUP_COLUMN";
DataSet dsColumn = databaseManager.GetData(sqlLookupColumn);
DataGridViewComboBoxCell comboboxColumn = new DataGridViewComboBoxCell();
foreach (DataRow row in dsColumn.Tables[0].Rows)
{
comboboxColumn.Items.Add(row[1].ToString());
}
dataGridView1.Rows[n].Cells[1] = comboboxColumn;
}
我试图找到类似:
comboboxColumn.Selected = true;
什么正确的方法来做到这一点?
WebForms?的WinForms? WPF? ASP.NET MVC? SilverLight的? –
@UweKeim winforms先生 – MRu
为什么不创建它后创建组合框的值。就像在foreach循环之后,你应该使它成为'comboboxColumn.Value = comboboxColumn.Items [0] //或者你想要的所有项目中的任何一个。 P.S .:这是一个不好的实践,命名一个'DataGridViewComboBoxCell'就像“comboboxColumn”... –