2010-12-02 82 views
0

我有一些DataGridViews每個顯示DataTable從一個DataSet與多個DataTables。如何在保存更改時從DataGridView避免DataTable中的System.DBNull?

向DataGridView添加新行並將其保存到DataSet時,bool列具有System.DBNull-Value,稍後會導致異常(在其他應用程序中讀取DataSet時)。

只有當我的bool列中的複選框被選中然後取消選中時,它在保存DataSet時的有效值爲false。

我該如何確保,複選框列在添加到我的DataGridView或保存它們時始終具有默認值false?

回答

0

在DataSet設計器,你可以選擇一個數據表列,設置AllowDBNull爲false,默認值設置爲False。這樣該值將是錯誤的而不是DBNull。

+0

將`AllowDBNull`屬性設置爲false不會向列中插入一個假值,而是會在嘗試插入`DBNULL`時引發異常。 – PedroC88 2011-11-12 07:28:35

1

您是否正在使用存儲過程?如果是這樣,您可以在那裏設置默認值或爲數據庫中的列設置默認值。

另一條路線是對的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 
相關問題