2016-06-27 49 views
0

这是一个代码,我从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; 

什么正确的方法来做到这一点?

+0

WebForms?的WinForms? WPF? ASP.NET MVC? SilverLight的? –

+0

@UweKeim winforms先生 – MRu

+0

为什么不创建它后创建组合框的值。就像在foreach循环之后,你应该使它成为'comboboxColumn.Value = comboboxColumn.Items [0] //或者你想要的所有项目中的任何一个。 P.S .:这是一个不好的实践,命名一个'DataGridViewComboBoxCell'就像“comboboxColumn”... –

回答

0

创建它后,你只需设置你的组合框的值。像在foreach循环之后,您应该只输入comboboxColumn.Value = comboboxColumn.Items[0] //or whichever of all the items you want。这会给你的组合框的想要的价值。 P.S .:一个DataGridViewComboBoxCell像“comboboxColumn”一样是个不好的练习...

相关问题