您的位置:首页 > 其它

关于TreeView的问题(数据过滤后取不到数据)

2008-06-03 07:47 495 查看
这个是数据结构

ModuleIDModuleNameModulePageModuleParentModuleOrder
1字典管理10
2身份管理b.aspx11
3用户管理30
4新增用户a.aspx31

ModuleID--模块ID,自动增长
ModuleName--名称
ModulePage--页面
ModuleParent--与ModuleID相对应
ModuleOrder--,如果为0时为根节点,否则为子节点(两级就可以了)

VB.NETcode
DimMyDRAsSqlDataReader=MyCommand.ExecuteReader()

MyDS.Load(MyDR,LoadOption.OverwriteChanges,NewString(){"Module"})

DimDVAsDataView=MyDS.Tables(0).DefaultView

DV.RowFilter="ModuleOrder=0"

IfDV.Count>0Then

ForiAsInteger=0ToDV.Count-1

DimTVAsTreeNode=NewTreeNode

WithTV
.Text=DV.Item(i).Item("ModuleName")
.Value=DV.Item(i).Item("ModuleID")
.Expanded=False
EndWith

TreeView1.Nodes.Add(TV)


'这里开始有问题
DimDVPAsDataView=MyDS.Tables(0).DefaultView

DVP.RowFilter="ModuleOrder<>0ANDModuleParent="&_
DV.Item(i).Item("ModuleID").ToString()

IfDVP.Count>0Then

ForjAsInteger=0ToDVP.Count-1

DimTVPAsTreeNode=NewTreeNode

WithTVP
.Text=DVP.Item(j).Item("ModuleName")
.Value=DVP.Item(j).Item("ModuleParent")
.NavigateUrl=DVP.Item(j).Item("ModulePage").ToString()
.Target="_New"
EndWith

TV.ChildNodes.Add(TVP)

Next

EndIf

Next

EndIf


只能显示第一个节点及其子节点,错误信息如下:

System.IndexOutOfRangeException:索引1不是为负数,就是大于行数。在System.Data.DataView.GetElement(Int32index)在System.Data.DataView.get_Item(Int32recordIndex)在_Default.FillData()位置D:/Programme/WEB/XFMIS/Default.aspx.vb:行号62




后面将代码改成如下,问题解决。




DimDVPAsDataRow()=MyDS.Tables(0).Select("ModuleOrder<>0"&_
"ANDModuleParent="&DV.Item(i).Item("ModuleID").ToString())

IfDVP.Length>0Then

ForjAsInteger=0ToDVP.Length-1

DimTVPAsTreeNode=NewTreeNode

WithTVP
.Text=DVP(j).Item("ModuleName")
.Value=DVP(j).Item("ModuleParent")
.NavigateUrl=DVP(j).Item("ModulePage").ToString()
.Target="_New"
EndWith

TV.ChildNodes.Add(TVP)

Next

EndIf
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐