FlexGrid 树不为整个网格创建节点

FlexGrid Tree not creating nodes for entire grid

我有一个由数据表填充的 flexgrid。然后我按指定的列分组并添加节点以使用树视图 属性。问题是,例如,如果我有 1000 条记录并将其分成 20 组,我将在末尾有 20 条记录刚刚添加到最后一个节点中,因为它停止查看 1000 行,包括它的节点创建,这意味着它会认为网格中有 1020 行。 这是我用来创建节点的函数:

Private Sub GroupBy(ByVal colName As String, ByVal level As Integer)
        Dim current As Object = ""
        For i As Integer = fgResults.Rows.Fixed To _data.Tables("Results").Rows.Count - 1
            If Not fgResults.Rows(i).IsNode Then
                Dim value As Object = fgResults.Item(i, colName).ToString
                If Not Object.Equals(value, current) Then
                    fgResults.Rows.InsertNode(i, level)
                    fgResults.Item(i, colName) = value
                    current = value
                End If
            End If
        Next
    End Sub

colName 是我分组的列的名称,level 是节点的级别(我在这里总是使用 0,因为我只想要一层)。我在想的是,如果有一种方法可以使 for 循环 运行 直到数据表结束,那将是最好的解决方案。感谢您的任何帮助。

经过更多研究并与一些开发人员合作后,我找到了非常简单的解决方案,所以我将 post 放在这里,因为我无法在网上找到很多关于此主题的研究。问题是循环没有到达网格的末尾,因为随着节点的创建,行数增加了。对此的解决方案是在之前添加相同的 for 循环,但是在放置节点的任何地方都会增加一个计数器。这样,当我 运行 for 循环放置节点时,我将计数器添加到我正在循环的行数,以便它循环遍历整个事物。该计数器看起来像这样,并被放置在我上面 posted 的 for 循环之前。

        For i As Integer = fgResults.Rows.Fixed To _data.Tables("Results").Rows.Count - 1
            If Not fgResults.Rows(i).IsNode Then
                Dim value As Object = fgResults.Item(i, colName).ToString
                If Not Object.Equals(value, current) Then
                    count += 1
                    current = value
                End If
            End If
        Next

然后我修改了上面的 for 循环以包含此计数: For i As Integer = 1 To _data.Tables("Results").Rows.Count + count