C# 如何使用C在datagridview Windows窗体应用程序内的ComboBox中设置默认的第一个值

C# 如何使用C在datagridview Windows窗体应用程序内的ComboBox中设置默认的第一个值,c#,winforms,datagridview,combobox,C#,Winforms,Datagridview,Combobox,我的windows窗体应用程序具有Datagridview和combobox,我需要为示例Select item设置第一个值 我的成绩 预期结果 首先,您需要在数据库中为选择项文本添加一个条目 现在,行组合中默认显示的值取决于网格数据源中该列的值。 因此,例如,如果网格中的一行具有组合框所在列的值-1,则将显示条目选择项 编辑 在gridview中添加新记录时,您似乎希望ComboBox列有一个默认值。在这种情况下,使用事件DefaultValuesNeed。在事件处理程序中,可以将单元格值设置

我的windows窗体应用程序具有Datagridview和combobox,我需要为示例Select item设置第一个值

我的成绩

预期结果


首先,您需要在数据库中为选择项文本添加一个条目

现在,行组合中默认显示的值取决于网格数据源中该列的值。 因此,例如,如果网格中的一行具有组合框所在列的值-1,则将显示条目选择项

编辑 在gridview中添加新记录时,您似乎希望ComboBox列有一个默认值。在这种情况下,使用事件DefaultValuesNeed。在事件处理程序中,可以将单元格值设置为desidered值以显示选择项文本


这里combobox\u column\u key应替换为带有combobox的列的键

您的查询结果中是否有select项条目?@Steve否我需要设置初始值我收到了这个错误,我输入了您的代码..输入数组长于此表中的列数。'这很奇怪,查询返回的表中有两列。你能用调试器检查一下SqlDataAdapter填充的表dt中有哪些列吗?sry steve现在我得到了结果,但我只选择了它显示的组合select Item,然后单击combox,然后单击它


DataGridViewComboBoxColumn cmd_item =(DataGridViewComboBoxColumn)(invoice_datagrid.Columns["cmb_gridItem"]);
            DataTable dt = new DataTable();
            con.Open();
            SqlCommand cmd = new SqlCommand("SELECT DISTINCT  item_name,sales_rate.item_id FROM sales_rate JOIN items ON sales_rate.item_id=items.item_id", con);
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;
            da.Fill(dt);
            cmd_item.DisplayMember = "item_name";
            cmd_item.ValueMember = "item_id";
            cmd_item.DataSource = dt;
            con.Close();



....
da.SelectCommand = cmd;
da.Fill(dt);

// Add a fake record to the table with id = -1 to recognize it 
DataRow r = dt.NewRow();
r.ItemArray = new object[] {"select item", -1};

// Insert the new row in the first position of your table
dt.Rows.InsertAt(r, 0);
cmd_item.DisplayMember = "item_name";
cmd_item.ValueMember = "item_id";
cmd_item.DataSource = dt;
con.Close();
private void invoice_datagrid_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
{
    // Set the default value for the combobox column in new rows.
    e.Row.Cells("combobox_column_key").Value = -1
}