【问题标题】:How to Set Default First Value in ComboBox inside the datagridview Windows Forms Application using C#如何使用 C# 在 datagridview Windows 窗体应用程序内的 ComboBox 中设置默认第一个值
【发布时间】:2019-05-04 07:12:38
【问题描述】:

我的 Windows 窗体应用程序具有带有组合框的 Datagridview 我需要设置第一个值,例如(“选择项目”)

我的结果

预期结果



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();



【问题讨论】:

  • 您的查询结果中有“选择项目”条目吗?
  • @Steve 我不需要设置初始值

标签: c# winforms datagridview combobox


【解决方案1】:

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

....
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();

现在,默认情况下显示在组合中的行的值取决于网格数据源中该列的值。
因此,例如,如果您的网格中的一行对于您拥有 ComboBox 的列的值为 -1,则将显示条目“选择项”。

编辑
当您向 gridview 添加新记录时,您似乎需要 ComboBox 列的默认值。在这种情况下,Microsoft suggest 使用事件 DefaultValuesNeeded。在事件处理程序中,您可以将单元格值设置为所需的值以显示 选择项 文本。

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
}

这里 combobox_column_key 应该替换为带有组合框的列的键

【讨论】:

  • 我得到了这个错误我把你的代码..输入数组比这个表中的列数长。'
  • 这很奇怪,查询返回的表中有两列。您可以使用调试器检查由 SqlDataAdapter 填充的表 dt 中有哪些列?
  • sry steve 现在我得到了结果,但我只选择了它显示的组合选择项
  • 在我点击combox之前它显示ibb.co/TKsBSbB在我点击ibb.co/tmW52VW之后
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多