2011-01-26 40 views
1

我有一個DataTable(通過DataGridView顯示),並希望重用它來手動填寫不同的數據。因此,工作流程是:如何重用DataTable在C#中的不同數據源?

每當我需要重新填充數據表,我做的:

  1. 脫開從DataGridView中的數據表。
  2. 清除DataTable內容。
  3. 手動添加DataColumns和DataRows到DataTable。
  4. 用DataGridView再次鉤住DataTable。

要實現步驟0,我只需:DataGridView.DataSource = null。

爲了實現步驟1,I調用DataTable.Clear(),DataTable.Rows.Clear()和DataTable.Columns.Clear()。

爲了實現步驟3中,我請DataGridView.DataSource =數據表。

步驟2在正常方式完成,我跳過代碼。每當DataGridView更新爲新內容時,如果我點擊DataGridView列進行排序,下次更新DataTable時,當我嘗試添加新行時,將在步驟2中獲得空引用異常。但如果我從不點擊DataGridView列進行排序,所有工作正常。

我猜它是與排序。但我不知道是什麼導致了空引用異常。 DataTable是否有可能嘗試搜索舊內容中的某些鍵但找不到它?由於第一步當然無法找到舊內容。清理舊的DataTable內容的正確方法是什麼?因此,當我填入新內容時,它從不提及舊內容?

謝謝。

+2

爲什麼不只是創建一個新的DataTable?通過增加這種複雜性你會得到什麼? – 2011-01-26 02:02:43

回答

5

在DataGridView的數據綁定是聯繫在一起的表(通過DataView);你不能從桌子底下拉出桌子,並期望它繼續工作。
當你按一列,電網詢問DataView改變其排列順序,因爲列不存在anymoe其失敗。

您應該創建一個新的DataTable。

+0

非常感謝。 – Steve 2011-01-26 02:29:32

相關問題