【问题标题】:How do I select Combobox value in DataGridView如何在 DataGridView 中选择 Combobox 值
【发布时间】:2015-09-20 09:38:04
【问题描述】:

我在DataGridView 中有 3 列。

  1. 文本类型
  2. 组合框
  3. 文本类型

我已经像这样绑定 Datagridview 的 Combobox:

BindingSource bindingSourceUnit = new BindingSource();
bindingSourceUnit.DataSource = datatableObject;

ColumnUnit.DataSource = bindingSourceUnit;
ColumnUnit.ValueMember = "id";
ColumnUnit.DisplayMember = "title";

这显示了 ComboBox 第二列的每一行中的所有项目。 现在我正在从数据库中获取数据,并希望将其显示在 DataGridView 中。

cmd = new OleDbCommand("SELECT * FROM Detail WHERE lr_id = @id", con);
cmd.Parameters.AddWithValue("@id", ID);
reader = cmd.ExecuteReader();
if (reader.HasRows)
{
  while (reader.Read())
  {
    DataGridViewRow row = (DataGridViewRow)dgItem.Rows[0].Clone();
    row.Cells[dgItem.Columns["ColumnQty"].Index].Value = reader["qty"];
    row.Cells[dgItem.Columns["ColumnUnit"].Index].Value = reader["unit"];
    row.Cells[dgItem.Columns["ColumnDesc"].Index].Value = reader["detail"];
    dgItem.Rows.Add(row);
  }
}

在 while 循环中,“ColumnUnit”是我的 ComboboxType 字段。它不允许我预先选择值。

如何设置此列的值?

【问题讨论】:

  • 您是否使用调试器单步执行代码并评估行的值..您要克隆什么或试图克隆什么..
  • 我在示例中看到过,如果您想在网格中显示数据,您必须克隆行以便它可以包含所有列,或者您必须手动添加行,每次您使用什么类型的数据有
  • 您正在从选择查询中获取数据.. 执行查询后,使用Fill 方法返回数据并通过数据表或数据集将结果绑定到数据网格..跨度>

标签: c# datagridviewcolumn


【解决方案1】:

您使用的是 Ajax 组合框控件还是标准复选框列表控件?

在任何情况下,您都需要告诉控件应该选择哪个组合值,因此您必须检查从数据库调用返回的值,然后在组合框列表中搜索该值值,当您找到正确的值时,将“selected”属性设置为 true

试试

row.Cells[dgItem.Columns["ColumnUnit"].Index].Selected = row.Cells[dgItem.Columns["ColumnUnit"].Index].Value == reader["unit"] ? true : false;

尝试将单元格转换为 DataGridViewComboBoxCell,您应该能够以这种方式更改值。

var tempCombo = (DataGridViewComboBoxCell)drNew.Cells[0].Value;

【讨论】:

  • 我使用的是 C# Windows 窗体,在组合框中会有显示和值,所以我会从数据库中获取值,根据值我想选择组合框值
  • 我试过上面的代码,既没有选择组合框值也没有错误。
  • 试试 - var tempCombo = (DataGridViewComboBoxCell)drNew.Cells[0].Value;我已将其添加到帖子中
【解决方案2】:

一个解决方案(也许不是最好的):

private void dataGridView1_DefaultValuesNeeded(object sender,
    System.Windows.Forms.DataGridViewRowEventArgs e)
{
    e.Row.Cells["ColumnUnit"].Value = ... ; // set default value here
}

【讨论】:

    猜你喜欢
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 2011-03-13
    相关资源
    最近更新 更多