簡體   English   中英

如何在C#中為不同的數據源重用DataTable?

[英]How to reuse DataTable for different data source in C#?

我有一個DataTable(通過DataGridView顯示),並想重用它來手動填充不同的數據。 因此,工作流程為:

每當我需要重新填充DataTable時,我都會:

  1. 從DataGridView脫機DataTable。
  2. 清除數據表內容。
  3. 手動將DataColumns和DataRows添加到DataTable。
  4. 再次將DataTable與DataGridView掛鈎。

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

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

要實現步驟3,我將調用DataGridView.DataSource = DataTable。

第2步以常規方式完成,我跳過了代碼。

每當用新內容更新DataGridView時,如果我單擊DataGridView列進行排序,則下次更新DataTable時,當我嘗試添加新行時,我將在步驟2中獲得空引用異常。 但是,如果我從不單擊DataGridView列進行排序,則一切正常。

我想這與排序有關。 但是我不知道是什么導致空引用異常。 DataTable是否有可能嘗試搜索舊內容中的某些鍵,但找不到它? 當然,由於步驟1,它找不到舊內容。 什么是清除舊數據表內容的正確方法,以便在我填寫新內容時它永遠不會引用舊內容?

謝謝。

DataGridView的數據綁定(通過DataView )綁定到表; 您不能將桌子從桌子下面拉出,並期望它繼續工作。
當您按列排序時,網格會要求DataView更改其排序順序,此操作將失敗,因為該列不存在。

您應該創建一個新的數據表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM