Я использую 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
?