Vb.net FlexGrid树未为整个网格创建节点
我有一个flexgrid由一个datatable填充。然后,我将按指定列进行分组,并添加节点以使用treeview属性。例如,问题是,如果我有1000条记录,并将其拆分为20个组,那么在最后一个节点中添加了20条记录,因为它不再关注1000行,包括它创建的节点,这意味着它认为网格中有1020行。 下面是我用来创建节点的函数:Vb.net FlexGrid树未为整个网格创建节点,vb.net,treeview,nodes,c1flexgrid,Vb.net,Treeview,Nodes,C1flexgrid,我有一个flexgrid由一个datatable填充。然后,我将按指定列进行分组,并添加节点以使用treeview属性。例如,问题是,如果我有1000条记录,并将其拆分为20个组,那么在最后一个节点中添加了20条记录,因为它不再关注1000行,包括它创建的节点,这意味着它认为网格中有1020行。 下面是我用来创建节点的函数: Private Sub GroupBy(ByVal colName As String, ByVal level As Integer) Dim curre
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循环一直运行到datatable的末尾,那将是最好的解决方案。谢谢你的帮助 经过更多的研究和与一些开发人员的合作,我发现了这个非常简单的解决方案,因此我将在这里发布它,因为我无法在网上找到关于这个主题的很多研究。问题是循环没有到达网格的末尾,因为随着节点的创建,行数增加。解决方案是在之前添加相同的for循环,但在放置节点的任何位置都使用递增的计数器。这样,当我运行for循环来放置节点时,我将计数器添加到我正在循环的行数中,以便它循环整个过程。这个计数器看起来像这样,正好放在我上面发布的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循环以包含此计数:
对于i As Integer=1到_data.Tables(“Results”).Rows.Count+Count