【问题标题】:Adding datatables from dynamic tabs into an arraylist将动态选项卡中的数据表添加到数组列表中
【发布时间】:2019-01-18 16:49:50
【问题描述】:

我的页面设计上有三个标签。在第三个选项卡中,创建了动态选项卡。选项卡的数量基于输入文件中的行数(在第一个选项卡中,在这种情况下,我将在第三个选项卡中使用两行 == 两个(动态)选项卡)。 这意味着有两个表,第一个动态选项卡中的一个表(我们称之为表 A)和第二个动态选项卡中的另一个表(我们称之为表 B)。

我正在尝试将表 A 和 B 添加到数组列表中。

目前我有代码;

For each page in Tabs.Tabpages
Dim dataTableToCopy as New DataTable
dataTableToCopy = dynamicDataTable.copy
arraylistToHoldTables.add(dataTableToCopy)

问题在于它只复制最后一个数据表,在本例中为表 B。

我尝试了另一种方法,其中涉及合并数据表。

For each page in Tabs.Tabpages
Dim dataTableToCopy as New DataTable
dataTableToCopy = dynamicDataTable.copy
mergedDataTable.Merge(dataTableToCopy)
arraylistToHoldTables.add(dataTableToCopy)

这种方法的问题在于,虽然我能够检索所有值,但主要任务是将每个表添加到数组列表中。 我正在考虑可能拆分合并的数据表,但不确定从那里采取的方法。

在第 100 行拆分,因为每个表有 100 行

【问题讨论】:

  • 首先,你为什么要使用ArrayList?现在已经不是 2004 年了。如果您想要包含DataTables 的集合,请使用List(Of DataTable)。其次,为什么在声明dataTableToCopy变量的时候又新建了一个DataTable,然后又马上丢弃呢?您需要了解 New 关键字的作用以及何时使用它。如果您不想要新的DataTable,请不要创建。
  • 至于问题,第一个代码 sn-p 在循环的每次迭代中使用相同的DataTable 调用Copypage 是当前的TabPage,因此您需要在循环内获取与该页面关联的DataTable,而不是始终使用引用相同DataTable 的变量。在For Each 循环中,如果你没有在循环内使用循环控制变量,那么你几乎肯定做错了。

标签: vb.net dynamic merge datatable copy


【解决方案1】:

解决方案是从每个选项卡访问每个数据表是遍历每个选项卡的控件

因此,在每个选项卡中,为该选项卡中的选项创建一个 datagridview 并将其添加到列表中。

【讨论】:

    猜你喜欢
    • 2015-09-02
    • 2017-01-09
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    相关资源
    最近更新 更多