我在DataGridView
中有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字段。它不允许我预先选择值。
如何设置此列的值?
答案 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
}