在DataGridView中设置ComboBox的默认选定值

时间:2019-01-13 15:42:48

标签: c# winforms datagridview

我的表单由一个DataGridView组成,在其中,我有一个列作为ComboBox。
ComboBox被数据库查询填充。

我想在DataGridView中显示ComboBox的默认值。我已经在组合框中加载了值,但是找不到一种方法来为其设置默认值。

Layout

点击btnLoadCombo按钮,我将带有以下代码的值添加到组合框中:

private void btnLoadCombo_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["InventoryManagerConnectionString"].ConnectionString);

    //Filling ComboBoxes
    con.Open();
    SqlCommand cmdGetRootCat = new SqlCommand("SELECT * FROM tblProductCategories", con);

    SqlDataReader sdaRootCat = cmdGetRootCat.ExecuteReader();
    comboBoxCatTest.Items.Clear();

    while (sdaRootCat.Read())
    {
        this.CatCombo.Items.Add(sdaRootCat["Cat_Name"]);
    }

    //Filling DataGridView
    DataTable dt = new DataTable();
    dt.Clear();
    SqlCommand cmd = new SqlCommand("SELECT Cat_ID, Cat_Name FROM tblProductCategories", con);

    SqlDataReader sda = cmd.ExecuteReader();
    dt.Load(sda);
    dataGridCatList.DataSource = dt;
    con.Close();            
 }

我希望得到如图2所示的结果。

1 个答案:

答案 0 :(得分:0)

您可以使用

foreach(DataGridViewRow row in dataGridCatList.Rows)
{
    if(row.Cells[3].Value != null) //ignore last row which is empty
    {
        if( row.Cells[3].Value.Equals(1018) )
            row.Cells[0].Value = this.CatCombo.Items[0];
    }
    //...and so on
}

您正在使用foreach()循环遍历每一行,并将Cat_ParentCat的值与row.Cells[3].Value.Equals(Cat_ParentCatValue)进行比较。如果找到匹配项,请使用row.Cells[0].Value = this.CatCombo.Items[yourDefaultValue];

设置ComboBox的默认值。