当前位置:编程学习 > C#/ASP.NET >>

TreeView控件代码分析?

是关于TreeView菜单控件操作的代码,理解的不是很透彻,帮我解释分析下!!!    
protected void Page_Load(object sender, EventArgs e)
    {
        Bind(TreeView1.Nodes, "f");//    }
    Class1 get = new Class1();
    protected void Bind(TreeNodeCollection Nods, string parenid)
    {
        TreeNode NewNode;
        DataSet ds = get.getAll();
        DataRow[] rows = ds.Tables[0].Select("parentid='" + parenid + "'");//        foreach (DataRow row in rows)
        {
            NewNode = new TreeNode(row["name"].ToString(), row["PID"].ToString(), "", row//["calssname"].ToString(), "iright");
            NewNode.Collapse();
            Nods.Add(NewNode);
            Bind(NewNode.ChildNodes, row["pid"].ToString());//
        }
    } --------------------编程问答-------------------- 不是你理解的不透彻,而是这段代码很混乱。 --------------------编程问答-------------------- 这段代码有点乱,不利于理解 --------------------编程问答-------------------- 这个代码书写确实不规范,但由于本身功能能很见到,所以还是很好理解啊:
Bind(TreeNodeCollection Nods, string parenid)是个迭代函数,
树这一类的嵌套结构一般就这样写了
--------------------编程问答-------------------- 勘误:   "但由于本身功能能很见到" 
更正为: "但由于本身功能很少" --------------------编程问答-------------------- 1.2楼咋么说代码乱,在这里看肯定没有在环境里看整齐啊, --------------------编程问答--------------------  Bind(NewNode.ChildNodes, row["pid"].ToString());//关键是这一句采用递归的方法。。。层层调用 --------------------编程问答--------------------  private void BindTreeview()
    {
        string sqlWhere = @" where parentid='0'";   //跟节点
        List<category> listcategory = categoryBll.GetCategoryByUserid(sqlWhere);

        foreach (category ca in listcategory)
        {
            TreeNode node = new TreeNode();
            node.NavigateUrl = "";
            node.Text = ca.Categoryname;
            node.Value = ca.Categoryid.ToString();
            node.Expanded = false;
            tvCategory.Nodes.Add(node);

            AddChildNode(node);
        }
    }

    ///
    /// 添加子节点
    ///
    private void AddChildNode(TreeNode node)
    {
        if (node.Value == null)
            return;
        int categoryid = Convert.ToInt32(node.Value);
        string sqlWhere = " where  parentid='" + categoryid + "' and (userid=1 or userid=0)";

        List<category> listcategory = categoryBll.GetCategoryByUserid(sqlWhere);

        TreeNode newNoed;
        foreach (category ca in listcategory)
        {
            newNoed = new TreeNode();
            newNoed.Text = ca.Categoryname;
            newNoed.Value = ca.Categoryid.ToString();

            node.ChildNodes.Add(newNoed);

            AddChildNode(newNoed);
        }
    } --------------------编程问答-------------------- 是以前做的一个例子
查询语句可以自己定 --------------------编程问答-------------------- 我更不懂 --------------------编程问答-------------------- 可以学习 --------------------编程问答-------------------- 用递归绑定数据吧。。。。。。[align=center]*********************************************************** 
                  欢迎使用 CSDN 小秘书
              http://blog.csdn.net/whowhen21
***********************************************************[/align] --------------------编程问答-------------------- 我是菜鸟。。。我想问下,怎么样能让树无限添加下一级?比如说。公司下添加部门,部门下添加具体部门。。。类似这样可以一直添加的。。。 --------------------编程问答-------------------- 直接node添加添加再添加
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,