如何在DataGridView

时间:2015-07-02 18:08:08

标签: c# datagridviewcolumn

我在DataGridView中有3列。

  1. TextType
  2. 组合框
  3. TextType
  4. 我像这样绑定了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字段。它不允许我预先选择值。

    如何设置此列的值?

2 个答案:

答案 0 :(得分:0)

您使用的是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;

答案 1 :(得分:0)

解决方案(可能不是最好的解决方案):

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