我在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
defult值的空值,尽管使用DataSourceNullValue
属性?
答案 0 :(得分:1)
您的其他帖子的答案应该会有所帮助: Combo box is not displaying default value in DataGridView in C#
请参阅第一个答案末尾的评论。设置空值仅显示默认值,但实际上并未设置它。