高效過濾DataSet中DataTable,無需修改數據源
引言
根據數據源的不同,DataGridView 數據過濾有多種方法。然而,當使用 DataGridView.DataSource 屬性時,過濾 DataSet 中的 DataTable 會帶來獨特的挑戰。本文探討解決此問題的方案,允許在不更改數據源的情況下進行過濾。
問題概述
直接將 DataTable 綁定到 DataGridView(示例 1)允許使用 DataTable.DefaultView.RowFilter 屬性進行過濾。但是,當從 DataSet 綁定 DataTable(示例 3)時,相同的過濾方法不會更新 DataGridView。這是因為 DataGridView.DataSource 屬性設置為 DataSet,而不是底層的 DataTable。
解決方案:保留數據源
為了在不更改數據源的情況下過濾 DataSet 中的 DataTable,我們可以使用以下方法:
<code class="language-csharp">DataTable table = (DataTable)dataGridView1.DataSource;</code>
<code class="language-csharp">table.DefaultView.RowFilter = string.Format("Field = '{0}'", textBoxFilter.Text);</code>
解釋
通過從 DataMember 屬性訪問 DataTable,我們可以過濾底層的 DataTable,而無需更改 DataGridView.DataSource。這保留了數據源,並允許根據需要對 DataSet 執行其他操作。
結論
為 DataGridView 過濾 DataSet 中的 DataTable 對象需要與 DataTable 直接綁定到網格時不同的方法。通過利用 DataMember 屬性並將過濾器應用於底層的 DataTable,我們可以有效地過濾數據,而不會影響數據源的完整性。
以上是如何在不修改資料來源的情況下過濾 DataGridView 的資料集中的資料表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!