gpt4 book ai didi

c# - 如何在 C# 中为不同的数据源重用 DataTable?

转载 作者:太空宇宙 更新时间:2023-11-03 20:36:37 24 4
gpt4 key购买 nike

我有一个 DataTable(通过 DataGridView 显示),想重新使用它来手动填充不同的数据。所以工作流程是:

每次我需要重新填充数据表时,我都会这样做:

  1. 从 DataGridView 中解开 DataTable。
  2. 清除 DataTable 内容。
  3. 手动将 DataColumns 和 DataRow 添加到 DataTable。
  4. 再次将 DataTable 与 DataGridView Hook 。

要实现第 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 步。什么是清除旧 DataTable 内容的正确方法,以便在我填写新内容时它永远不会引用旧内容?

谢谢。

最佳答案

DataGridView 的数据绑定(bind)绑定(bind)到表格(通过 DataView);你不能把 table 从下面拉出来并指望它继续工作。
当您按列排序时,网格要求 DataView 更改其排序顺序,但该操作失败,因为该列根本不存在。

您应该创建一个新的 DataTable。

关于c# - 如何在 C# 中为不同的数据源重用 DataTable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4800776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com