我在Windows窗体中使用DataGridView
来允许用户添加n个行,并由用户输入值。 DataGridView
的列之一包含组合框,该组合框通过使用数据库显示其项目。
我在Load事件中使用以下代码将DataGridViewComboBox
与数据库连接:
private void PurchaseMaster_Load(object sender, EventArgs e)
{
DataTable dt = itemBAL.GetTable();
bindingSource1.DataSource = dt;
ItemName.DataSource = bindingSource1;
ItemName.DisplayMember = "Name";
ItemName.ValueMember = "ItemId";
ItemName.DataPropertyName = "ItemId";
ItemName.AutoComplete = true;
ItemName.DefaultCellStyle.NullValue = dt.Rows[0][1].ToString();
ItemName.DefaultCellStyle.DataSourceNullValue = dt.Rows[0][0].ToString();
}
但是,只要我没有从
DataGridViewComboBox
中选择任何值并单击保存按钮,我就会在与null
值相对应的表中找到DataGridViewComboBox
值。foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.IsNewRow)
continue;
DataRow dtRow = dt.NewRow();
for (int i = 0; i < dataGridView1.Columns.Count; i++)
dtRow[i] = row.Cells[i].Value == null ? DBNull.Value : row.Cell[i].Value;
dt.Rows.Add(dtRow);
}
谁能告诉我,尽管使用了
DataGridViewcombobox
属性,为什么我在数据库中却没有DataSourceNullValue
无效值的空值? 最佳答案
您其他帖子的答案应该会有所帮助:
Combo box is not displaying default value in DataGridView in C#
请参阅第一个答案末尾的评论。设置空值仅显示默认值,但实际上并未设置。