Как избежать System.DBNull в DataTable из DataGridView при сохранении изменений? - PullRequest
0 голосов
/ 02 декабря 2010

У меня есть несколько DataGridView, каждый из которых отображает один DataTable из DataSet с несколькими DataTables.

При добавлении новой строки в DataGridView и сохранении ее в DataSet столбцы bool имеют значение System.DBNull-Value, которое вызываетпозднее исключение (при чтении DataSet в другом приложении).

Только если флажки в моем столбце bool отмечены, а затем сняты, при сохранении DataSet оно имеет допустимое значение false.

Как я могу убедиться, что столбцы флажков всегда имеют значение по умолчанию false при добавлении их в мой DataGridView или сохранении?

Ответы [ 2 ]

2 голосов
/ 02 декабря 2010

Используете ли вы хранимые процедуры? Если это так, вы можете установить значение по умолчанию там или установить значение по умолчанию для столбца в базе данных.

Другим способом было бы назначить свойство DefaultValue объекта DataTable.Column

Вы используете свойство DefaultValue объекта DataColumn.

' Set default values. '
With myDataSet.Tables("Orders")
    .Columns("Order_Date").DefaultValue = Today
    .Columns("Quantity").DefaultValue = 1
    . . .
End With

' Add the new row. '
Dim aNewRow As DataRow = myDataSet.Tables("Orders").NewRow
myDataSet.Tables("Orders").Rows.Add(aNewRow)

Вы также можете указывать значения каждый раз, когда добавляете строку:

' Create a new row, set its values and add it. '
Dim aNewRow As DataRow = myDataSet.Tables("Orders").NewRow

With myDataSet.Tables("Orders")
    .Columns("Order_Date") = Today
    .Columns("Quantity") = 1
    . . .
    .Rows.Add(aNewRow)
End With
0 голосов
/ 02 декабря 2010

В конструкторе DataSet вы можете выбрать столбец DataTable и установить для AllowDBNull значение false, а для DefaultValue - значение False.Таким образом, значение будет ложным, а не DBNull.

...