我在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#

请参阅第一个答案末尾的评论。设置空值仅显示默认值,但实际上并未设置。

07-28 02:44