treeView控件的使用

下面是我用treeview控件做的权限

所有的权限都在数据库一张表中了如何

如图

显示的效果如下

     

我下面要说的就是

在数据库中读取到一张表中

有两种方法

一个是先把它放在xml中之后再通过treeview控件直接读取

一种是在后台直接读取放在treeview控件当中,当然是读到xml控件好理解

但是以一种缺陷就是延迟加载,不适合用作权限读取

因为他只有在读取第二遍的时候才会把这个人的真正权限读取出来,第一次是读取上一个人的

下面是我给大家分享的代码,希望大家各自所需

注意身份检测数据库是没有的,是我们在外面代码中自己添加进去



  此treeview没有用xml
AddTrees((TreeNode)null); //获取方法下面
TreeView1.ExpandDepth = 1;  //展开第几级目录
TreeView1.ExpandAll();  //全部展开目录
 public void AddTrees(TreeNode pNode)    //首目录数据库是没有的 是我们自己加的
    {                                    //这就不需要递归运算
        TreeNode Node = new TreeNode();
        Node.Text = "身份检测";
        TreeView1.Nodes.Add(Node);
       
        AddTree(00, Node);
    }
  //递归添加树的节点
  //递归运算
    public void AddTree(int ParentID, TreeNode pNode)
    {
        DataView dvTree = new DataView(dt);
        if (ParentID == 00)
        {
            dvTree.RowFilter = "Len(FJBH) = " + 3;  //过滤掉没有用的目录
        }
        else
        {
            dvTree.RowFilter = "[FJBH] = '" + ParentID+"'";
        }
        foreach (DataRowView Row in dvTree)
        {
            TreeNode Node = new TreeNode();
            //if (pNode == null)
            //{    //添加根节点
            //    if (Row["DHDZ"].ToString() != "")
            //    {
            //        Node.Text =Row["XSBT"].ToString();
            //        Node.NavigateUrl = Row["DHDZ"].ToString();     
            //        Node.Target = "iframepage";
            //    }
            //    TreeView1.Nodes.Add(Node);
            //    AddTree(Int32.Parse(Row["BH"].ToString()), Node);    //再次递归
            //}
            //else
            //{   //添加当前节点的子节点
                if (Row["DHDZ"].ToString() != "")
                {
                    Node.Text = Row["XSBT"].ToString();
                    Node.NavigateUrl = Row["DHDZ"].ToString();
                    Node.Target = "iframepage";
                }
                pNode.ChildNodes.Add(Node);
               // Node.Expanded = false;
                AddTree(Int32.Parse(Row["BH"].ToString()), Node);    //再次递归
           // }
        }
        dvTree.Dispose();
    }

这个是用xml做的 当用做权限的时候 有时会延迟加载 做一些活便的东西可以可以使用
加载xml首要东西
            XmlDocument xd = new XmlDocument();
            xd.Load(Server.MapPath("~/App_Data/BMBL.xml"));
            xd.DocumentElement.InnerText = "";
            XmlElement node = xd.DocumentElement;
            AddTree(xd, node, "top");
            xd.Save(Server.MapPath("~/App_Data/BMBL.xml"));
读取方法 也可以用递归运算
 private void AddXmlNode(XmlDocument xd, XmlElement cnode, string tid)
    {
        foreach (DataRow row in dt.Rows)
        {
            //稍做修改,以适应权限和树的逻辑
            if (row["FJBH"].ToString() == tid && row["DHDZ"].ToString() != "")
            {
                XmlElement node = xd.CreateElement("CNode");
                node.SetAttribute("title", row["XSBT"].ToString());
                node.SetAttribute("url", row["DHDZ"].ToString());
                string tids = row["BH"].ToString();
                cnode.AppendChild(node);
                AddXmlNode(xd, node, tids);
            }
        }
    }

希望对大家有用

posted @ 2011-06-28 16:42  真名一世  阅读(618)  评论(0编辑  收藏  举报