保存更改时如何从DataGridView中避免DataTable中的System.DBNull?

时间:2010-12-02 15:18:28

标签: .net datagridview dataset datatable default-value

我有一些DataGridViews,每个DataGridViews都显示一个来自具有多个DataTables的DataSet的DataTable。

将新行添加到DataGridView并将其保存到DataSet时,bool列具有System.DBNull-Value,稍后会导致异常(在其他应用程序中读取DataSet时)。

只有选中我的bool列中的复选框然后取消选中时,保存DataSet时它的有效值为false。

如何确保复选框列在将其添加到DataGridView或保存时始终具有默认值false?

2 个答案:

答案 0 :(得分:2)

您使用的是存储过程吗?如果是这样,您可以在其中设置默认值或为数据库中的列设置默认值。

另一种方法是分配DataTable.Column的DefaultValue属性

您使用DataColumn对象的DefaultValue属性。

' 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

答案 1 :(得分:0)

在DataSet设计器中,您可以选择DataTable列并将AllowDBNull设置为false,将DefaultValue设置为False。这样,该值将为false而不是DBNull。