如何在DataGridView中选择组合框值

本文关键字:组合 选择 DataGridView | 更新日期: 2023-09-27 18:00:49

DataGridView中有3列。

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

我绑定了Datagridview的组合框,如下所示:

BindingSource bindingSourceUnit = new BindingSource();
bindingSourceUnit.DataSource = datatableObject;
ColumnUnit.DataSource = bindingSourceUnit;
ColumnUnit.ValueMember = "id";
ColumnUnit.DisplayMember = "title";

这显示了组合框第二列每行中的所有项目。现在我正在从数据库中获取数据,并希望将其显示在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字段。它不允许我预先选择值。

如何设置此列的值?

如何在DataGridView中选择组合框值

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

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

尝试

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;

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

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