首页 文章

如何从数据表中将组合框添加到datagridview?

提问于
浏览
0

这是一个代码,我从datatable向datagridview添加值 . datagridview的“First”和“Third”列已填充了数据表中的数据 . 问题出在“第二”和“第四”列,因为我必须将它作为一个组合框供用户选择 . 每个组合框都有默认值“columnDefaultValue” .

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;

这样做的正确方法是什么?

1 回答

  • 0

    你可以在创建它之后设置你的组合单元的值 . 就像在foreach循环之后,你应该放 comboboxColumn.Value = comboboxColumn.Items[0] //or whichever of all the items you want . 这会给你的组合框提供所需的 Value . P.S:将 DataGridViewComboBoxCell 命名为"comboboxColumn"是一个不好的实践...

相关问题