用Trewview生成树:动态的从数据库中取树结点

原创 2004年10月28日 16:48:00
数据库中生成菜单的表的表结构
   如图:
o_tree.gif
其中,mnu_xh为结点的序号,mnu_name为结点要显示的文本,mnu_url为该结点要链接的网页,mnu_fbm为父结点的序号,
   mnu_img为结点的图形,mnu_end为是否是末结点,sqldst.Tables[0]为所有要在树上显示的结点的记录。
  
    在page第一次加载时调用filltree填充树的第一级目录,第一级目录的父结点为"0"。
   
    getnode(this.TreeView1,"0");                //得到当前结点
 this.TreeView1.Nodes[0].ID="0";             //设置根结点的ID
 this.TreeView1.Nodes[0].Text="admin";       //设置根结点显示的文本
 this.TreeView1.Nodes[0].NodeData ="0";      //设置根结点的NadeData
    filltree(nodex,"mnu_lb='1' and mnu_fbm='0'","mnu_xh","mnu_name","mnu_url","mnu_img","mnu_lb","mnu_end");
    
    其中mnu_bl,mnu_fbm作为从数据源中筛选数据的条件,nodex为当前结点。
  
    filltree作为填写充树的方法,填充当前结点tnc下面的结点。
  
 private void filltree(TreeNode tnc,string strslt,string strcode,string strname,string strurl,string strimg,string strgrade,string strend)
 {
  DataRow []drs;
  drs=sqldst.Tables[0].Select(strslt);//根据strslt对数据源进行有条件的筛选
  tnc.Nodes.Clear();  //清除子树
  foreach(DataRow dr in drs)
  {
   TreeNode rootnode=new TreeNode();
   rootnode.ID=GetRowValue(dr,strcode);//将父结点的值作为该结点的ID
   rootnode.Text=GetRowValue(dr,strname);//
   rootnode.NavigateUrl =GetRowValue(dr,strurl);
   rootnode.ImageUrl =GetRowValue(dr,strimg);
   rootnode.ExpandedImageUrl =GetRowValue(dr,strimg);
   rootnode.SelectedImageUrl =GetRowValue(dr,strimg);
   rootnode.NodeData=GetRowValue(dr,strgrade);
   tnc.Nodes.Add(rootnode); //给tnc添加一个结点
   if(GetRowValue(dr,strend)=="0")
   {
    TreeNode tmpnode=new TreeNode(); //添加临时结点
    tnc.Nodes[tnc.Nodes.Count-1].Nodes.Add(tmpnode);  
   }
  }
 }
  
 //下面是TreeView的展开事件,展开下级结点。
 
 private void TreeView1_Expand(object sender, Microsoft.Web.UI.WebControls.TreeViewClickEventArgs e)
 {
  getnode(this.TreeView1,e.Node);
  if(this.TreeView1.Enabled==false)
   nodex.Expanded=false;
  else
  {
   int jc=int.Parse(nodex.NodeData.ToString())+1;
   //填充树,mnu_lb(NodeData),mnu_fbm(ID)为条件
   filltree(nodex,"mnu_lb='"+jc+"' and mnu_fbm='"+nodeid+"'","mnu_xh","mnu_name","mnu_url","mnu_img","mnu_lb","mnu_end");
  }
 }
 //取出数据库中对应的值
 private string GetRowValue(DataRow dr,String sCol)
 {
  if((dr.Table.Columns.Contains(sCol)==false)  || (dr.IsNull(sCol)))
   return "";                          
  else
  {
   if(dr[sCol].GetType().ToString()=="System.Boolean")
    if(dr[sCol].ToString()=="True")
     return "1";
    else
     return "0";
   else
    return dr[sCol].ToString();
   
  }
 }
 //取得当前结点
 private void getnode(TreeView tv ,string xh)
 {
  string []id=xh.Split('.');
  TreeNode tc=tv.Nodes[0];
  
  for(int i=1;i<id.Length;i++)
  {
   tc=tc.Nodes[int.Parse(id[i])];
  }
  nodex=tc;  //当前结点
  nodeid=tc.ID;//当前编号
 }

用Trewview生成树:利用xml文件生成树结点

(1)、利用XML文件生成:       先制作XML文件tree.xml                            (2)、指定TreeView的TreeNodeSrc属性为:tree...
  • bccu
  • bccu
  • 2004年10月28日 17:12
  • 898

如何在treeview中利用数据动态生成树?

数据库结构:id,name,parentid//采用递归的方法动态建立Tree        private void CreateTree(TreeNodeCollection Nds, int p...
  • YUAN168
  • YUAN168
  • 2007年06月14日 08:13
  • 906

easyUI中动态生成树的代码

$.ajax({     type: "post",     url: 'back/getUniversityAndUniversityDepartent.action',     succes...
  • qq_36827957
  • qq_36827957
  • 2017年07月23日 19:44
  • 502

java递归生成树

public List  getAllCommType(){   List treeList=new ArrayList();   //取到父节点id为0,只有一个   List typeLis...
  • yumuxixi
  • yumuxixi
  • 2017年10月05日 10:47
  • 624

后台传的json串页面生成树

无标题文档 body{ font-size:14px; margin:0;} div{ width:auto; height:au...
  • qq_34413570
  • qq_34413570
  • 2016年09月28日 08:58
  • 1920

dtree连接数据库动态生成树菜单

一、读取数据库中的数据返回list集合 package com.dao; import java.sql.Connection; import java.sql.DriverManager; im...
  • arui_email
  • arui_email
  • 2012年10月30日 16:44
  • 3647

flex树动态加载

背景:一次加载所有的数据,性能非常低下,所以默认只加载第一层,当点击的时候再去加载下面的孩子数据                           点击后 ------------------...
  • goodleiwei
  • goodleiwei
  • 2013年12月13日 17:46
  • 3814

通过js生成树

JSfunction selDep()    {        var source = new ActiveXObject(Microsoft.XMLDOM);          source.as...
  • yjinzaghi
  • yjinzaghi
  • 2008年04月22日 08:56
  • 2753

构建生成树算法----得到父节点的值

生成树 java 算法
  • liunian02050328
  • liunian02050328
  • 2015年01月06日 11:46
  • 602

树的动态生成

  树的动态生成和一般的静态书是不一样的。因为动态树中所有的结点或者部分节点不是固定的,可能会随时随着数据库中或者文件中的数据而动态的变动。对于一般的静态树,我们只需要在jsp页面中包含js代码就可以...
  • KCLOVE
  • KCLOVE
  • 2007年04月27日 23:32
  • 1049
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Trewview生成树:动态的从数据库中取树结点
举报原因:
原因补充:

(最多只允许输入30个字)