【问题标题】:Clear DataGridView with rows and headers structure of dataset bind使用数据集绑定的行和标题结构清除 DataGridView
【发布时间】:2020-08-02 14:36:06
【问题描述】:

我在表单中有 datagrid 视图,它通过以下代码使用 DataView 技术动态填充数据:

 DV = New DataView()
 DV.Table = ds.Tables("rsSearch")
 FlxSearch.DataSource = DV

但我想删除以前的列结构。同样,当我用相同的dataset 调用此网格时,正在发生这种情况:

我已经尝试了很多solutions 的清除和处理 DGV 和 DataView 但无法达到预期的效果。 关于在加载新数据时如何删除以前填充的列结构的任何建议?

【问题讨论】:

  • yourDataGridView.Columns.Clear()
  • 您的DataView 可能毫无意义。只需绑定DataTable。每个DataTable 已经有一个与之关联的DataView,可通过其DefaultView 属性访问。当您绑定DataTable 时,无论如何,这就是数据的来源。这就是您能够单击网格列标题进行排序的方式。如果你想要同一个表的多个视图,你只需要显式地创建一个DataView
  • @reza-aghaei 这不起作用....
  • 设置FlxSearch.DataSource = ds.Tables("rsSearch")。当您更改 DataTable 时,DGV 的 Column 结构将遵循套件。除非您在设计器中添加了这些列。由于您要更改 DataTable,因此要动态更改列名称,请从设计器中删除列。
  • 是的,你可以。嗯,不只是可以,这正是你的做法。只需ds.Tables("rsSearch").DefaultView.RowFilter = "The Filter"。或DirectCast(FlxSearch.DataSource, DataTable).DefaultView.RowFilter = "The Filter"。相同的对象,相同的过滤器,相同的结果。

标签: .net vb.net winforms


【解决方案1】:

首先将DataSource 设置为Nothing,这将删除行,然后在Columns 集合上调用Clear。重新设置DataSource 将生成新列。

myDataGridView.DataSource = Nothing
myDataGridView.Columns.Clear()
myDataGridView.DataSource = myNewDatatable

【讨论】:

    【解决方案2】:

    需要清除 Data Table 列而不是 DGV。因为它没有强绑定到DataGridView

    在 VB.NET 中:

    ds.Tables(tableName).Columns.Clear()
    

    在 C# 中:

    ds.Table[TableName].Columns.Clear(); 
    

    【讨论】:

    • 无论如何,您都需要清除网格列。如果您每次都使用相同的DataTable,则需要清除表格列。如果您每次都创建一个新的DataTable,则无需清除旧的列。如果你确实使用同一张表,你仍然需要每次重新绑定网格,否则它不会自己生成新的列。 DataGridView 仅在绑定时自动生成列。在绑定时更改 DataTable 的架构不会影响网格。
    • 那你为什么这么说:“当我用另一个数据集调用这个网格时,这正在发生”?如果您遗漏了细节,或者更糟糕的是,提供了不准确的细节,我们将很难提供相关的解决方案。始终提供完整而清晰的解释。
    • 抱歉是我的打字错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多