在DataGridView组合框中设置默认值

时间:2011-07-23 08:45:16

标签: c# .net winforms datagridview combobox

我在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属性?

1 个答案:

答案 0 :(得分:1)

您的其他帖子的答案应该会有所帮助: Combo box is not displaying default value in DataGridView in C#

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