这个是数据结构
ModuleID ModuleName ModulePage ModuleParent ModuleOrder
1 字典管理 1 0
2 身份管理 b.aspx 1 1
3 用户管理 3 0
4 新增用户 a.aspx 3 1
ModuleID--模块ID,自动增长
ModuleName--名称
ModulePage--页面
ModuleParent--与ModuleID相对应
ModuleOrder--,如果为0时为根节点,否则为子节点(两级就可以了)
-
VB.NET code
-
Dim MyDR As SqlDataReader = MyCommand.ExecuteReader() MyDS.Load(MyDR, LoadOption.OverwriteChanges, New String () { " Module " }) Dim DV As DataView = MyDS.Tables( 0 ).DefaultView DV.RowFilter = " ModuleOrder=0 " If DV.Count > 0 Then For i As Integer = 0 To DV.Count - 1 Dim TV As TreeNode = New TreeNode With TV .Text = DV.Item(i).Item( " ModuleName " ) .Value = DV.Item(i).Item( " ModuleID " ) .Expanded = False End With TreeView1.Nodes.Add(TV)
-
'这里开始有问题 Dim DVP As DataView = MyDS.Tables( 0 ).DefaultView DVP.RowFilter = " ModuleOrder<>0 AND ModuleParent= " & _ DV.Item(i).Item( " ModuleID " ).ToString() If DVP.Count > 0 Then For j As Integer = 0 To DVP.Count - 1 Dim TVP As TreeNode = New TreeNode With TVP .Text = DVP.Item(j).Item( " ModuleName " ) .Value = DVP.Item(j).Item( " ModuleParent " ) .NavigateUrl = DVP.Item(j).Item( " ModulePage " ).ToString() .Target = " _New " End With TV.ChildNodes.Add(TVP) Next End If Next End If
-
只能显示第一个节点及其子节点,错误信息如下:
System.IndexOutOfRangeException: 索引 1 不是为负数,就是大于行数。 在 System.Data.DataView.GetElement(Int32 index) 在 System.Data.DataView.get_Item(Int32 recordIndex) 在 _Default.FillData() 位置 D:/Programme/WEB/XFMIS/Default.aspx.vb:行号 62 -
-
后面将代码改成如下,问题解决。
-
-
Dim DVP As DataRow() = MyDS.Tables(0).Select("ModuleOrder <>0 " & _ " AND ModuleParent=" & DV.Item(i).Item("ModuleID").ToString()) If DVP.Length > 0 Then For j As Integer = 0 To DVP.Length - 1 Dim TVP As TreeNode = New TreeNode With TVP .Text = DVP(j).Item("ModuleName") .Value = DVP(j).Item("ModuleParent") .NavigateUrl = DVP(j).Item("ModulePage").ToString() .Target = "_New" End With TV.ChildNodes.Add(TVP) Next End If