如何在保存更改时从DataGridView避免DataTable中的System.DBNull?
问题描述:
我有一些DataGridViews每个显示DataTable从一个DataSet与多个DataTables。如何在保存更改时从DataGridView避免DataTable中的System.DBNull?
向DataGridView添加新行并将其保存到DataSet时,bool列具有System.DBNull-Value,稍后会导致异常(在其他应用程序中读取DataSet时)。
只有当我的bool列中的复选框被选中然后取消选中时,它在保存DataSet时的有效值为false。
我该如何确保,复选框列在添加到我的DataGridView或保存它们时始终具有默认值false?
答
在DataSet设计器,你可以选择一个数据表列,设置AllowDBNull为false,默认值设置为False。这样该值将是错误的而不是DBNull。
答
您是否正在使用存储过程?如果是这样,您可以在那里设置默认值或为数据库中的列设置默认值。
另一条路线是对的DataTable.Column
您使用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
将`AllowDBNull`属性设置为false不会向列中插入一个假值,而是会在尝试插入`DBNULL`时引发异常。 – PedroC88 2011-11-12 07:28:35