问题描述
在数据库中parent_id为"0"的有10个,但是运行时却只能显示前5个,不知道为什么呢?//protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){this.InitReportMenu();}}//treeview绑定代码:privatevoidInitReportMenu(){try{stringstrCD="0";DataSetds=this.GetDateFromDB(strCD);if(!ds.Tables[0].Rows.Count.Equals(0)){for(inti=0;i<ds.Tables[0].Rows.Count;i++){TreeNodemenuNode=newTreeNode();menuNode.Text=ds.Tables[0].Rows[i]["classname"].ToString();menuNode.Value=ds.Tables[0].Rows[i]["id"].ToString();menuNode.NavigateUrl="Default.aspx?class="+ds.Tables[0].Rows[i]["id"].ToString();TreeView_fox.Nodes.Add(menuNode);//二級addchildmenu1(menuNode,menuNode.Value);}}}catch{Response.Write("");}}privatevoidaddchildmenu1(TreeNodenode,stringstrCD){DataSetds=this.GetDateFromDB(strCD);if(!ds.Tables[0].Rows.Count.Equals(0)){for(intj=0;j<ds.Tables[0].Rows.Count;j++){TreeNodemenuNode=newTreeNode();menuNode.Text=ds.Tables[0].Rows[j]["classname"].ToString();menuNode.Value=ds.Tables[0].Rows[j]["id"].ToString();menuNode.NavigateUrl="Default.aspx?class="+ds.Tables[0].Rows[j]["id"].ToString();node.ChildNodes.Add(menuNode);addchildmenu1(menuNode,menuNode.Value);}}}publicDataSetGetDateFromDB(stringstrid){OleDbConnectionconn=newOleDbConnection();conn.ConnectionString=System.Configuration.ConfigurationSettings.AppSettings["connstring"];conn.Open();DataSetds=newDataSet();OleDbDataAdapterda=newOleDbDataAdapter("selectid,parent_id,classnamefromclasswhereparent_id="+strid,conn);da.Fill(ds,"ClassTable");returnds;conn.Close();}
解决方案
解决方案二:
可能是你的数据的parentid指向循环了,检查一下.
解决方案三:
奇怪的是,我刚才又运行了一下,竟然10个数据又都出来了,我再刷新一下,又只显示了5个
解决方案四:
我在过程"InitReportMenu"里加了response.write(i)试了下,有时显示:0123,有时显示:0123456789,所以有时能显示全,有时显示不全,我不知道为什么循环没有执行完.i的值不应该在过程"addchildmenu1"里被改变啊!!!大家帮我看看程序哪有问题?
解决方案五:
怎么没有人回答呢???我后来试了下,将addchildmenu1里的addchildmenu1去掉后可以显示出10条,但结果是只能显示二级
解决方案六:
protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){//取得所有节点并返回DSstringempID=treeMenu.selectEmpInfoByEmpName(Session["EmpName"].ToString()).Tables[0].Rows[0]["EmpID"].ToString();DataSetds=treeMenu.SelectMobuldInfo(Int32.Parse(empID));DataTabledt=newDataTable();dt=ds.Tables[0];AddNodes(dt,null,"0");}}//递归添加节点privatevoidAddNodes(DataTabledt,TreeNodenode,stringid){DataRow[]rows=dt.Select("ParentModuleID="+id);//筛选出属于父节点“node”的子节点集合foreach(DataRowdrinrows)//循环子节点集合{TreeNodend=newTreeNode();nd.Value=dr["quanXianID"].ToString();//存放节点IDnd.Text=dr["quanXianMingCheng"].ToString();//设置节点名称nd.ImageUrl=dr["imageURL"].ToString();//设置节点的图片nd.NavigateUrl=dr["URl"].ToString();//设置节点的链接nd.Target="MainFrame";this.AddNodes(dt,nd,nd.Value);//递归,添加该节点的子节点if(node==null||id=="0"){TreeView1.Nodes.Add(nd);//添加至根节点}else{node.ChildNodes.Add(nd);//添加子节点}}}给你一段代码,你自己去改吧这个没有问题,我用过
解决方案七:
设断点,跟进去应该好找