数据库:
  lbcode lbname lbprior
  0101 总则 01
  010101 内容 0101
 010101001 第一条 010101
  01 安全规程 0
  0201 国家局5号令 02
  020101 内容 0201
  020101001 第一条 020101
  02 安全生产基本条件规定 0
  循环读取出来再TreeView上面显示如下:\
 
  安全规程
       总则  
          内容
             第一张
  安全生产基本条件规定
       国家局5号令
          内容
             第一条
  跪求...

解决方案 »

  1.   

    做个while循环,再加上一个计数变量,从0开始搜索,每找到一个,就将它加到TreeView中,再利用它的lbcode去搜索下一个数据,如果有下一条,就继续查询,并将下一条作为子节点添加到它的下面,如果没有了,就将计数变量+1,在查询,如果没有,则跳出while循环,这时,TreeView已经构造好了
      

  2.   

    代码很多啊!
    楼主看这段代码public partial class BindTreeView : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {            departList = new List<Department>() {    
                    new Department{ ID = 1, ParentID= 0, Name=" 老总"},
                    new Department{ ID = 2, ParentID= 1, Name=" 市场副总"},
                    new Department{ ID = 3, ParentID= 1, Name=" 技术副总"},
                    new Department{ ID = 4, ParentID= 1, Name=" 行政副总"},
                    new Department{ ID = 5, ParentID= 2, Name=" 市场部"},
                    new Department{ ID = 6, ParentID= 4, Name=" 财务部"},
                    new Department{ ID = 7, ParentID= 4, Name=" 行政部"},
                    new Department{ ID = 8, ParentID= 3, Name=" C#技术部"},
                    new Department{ ID = 9, ParentID= 3, Name=" JAVA技术部"},
                    new Department{ ID = 10, ParentID= 9, Name=" J2EE技术部"},
                    new Department{ ID = 11, ParentID= 9, Name=" J2ME技术部"}
                };            TreeNode root = new TreeNode();            root.Text = this.departList[0].Name;
                root.Value = this.departList[0].ID.ToString();
                root.Checked = true;            this.TreeView1.Nodes.Add(root);            this.BindToTree(root);
            }        /// <summary>
            /// 对象列表
            /// </summary>
            private List<Department> departList;
            /// <summary>
            /// 绑定到树
            /// </summary>
            /// <param name="node"></param>
            private void BindToTree(TreeNode node)
            {
                if (node != null)
                {
                    var temp = from dept in departList
                               where dept.ParentID.ToString() == node.Value
                               select dept;                List<Department> tempList = temp.ToList<Department>();                tempList.ForEach(delegate(Department t)
                    {
                        TreeNode tnode = new TreeNode();
                        tnode.Text = t.Name;
                        tnode.Value = t.ID.ToString();
                        tnode.Checked = true;                    node.ChildNodes.Add(tnode);                    BindToTree(tnode);
                    });
                }
            }
        }
    http://topic.csdn.net/u/20101117/16/03ac66b9-b844-4afa-9838-a57db4618cc7.html
      

  3.   

    DataTable dtlModel = new DataTable();
            private void CreateData() {
                dtlModel.Columns.Add("id", typeof(Int32));
                dtlModel.Columns.Add("pid", typeof(Int32));
                dtlModel.Columns.Add("name");            for (int i = 1; i < 6; i++) {
                    DataRow dr = dtlModel.NewRow();
                    dr["id"] = i;
                    dr["pid"] = 0;
                    dr["name"] = i.ToString();
                    dtlModel.Rows.Add(dr);
                    for (int j = 1; j < 6; j++) {
                        DataRow dr1 = dtlModel.NewRow();
                        dr1["id"] = int.Parse(i.ToString() + j.ToString());
                        dr1["pid"] = i;
                        dr1["name"] = i + "_" + j;
                        dtlModel.Rows.Add(dr1);
                        for (int k = 1; k < 6; k++) {
                            DataRow dr2 = dtlModel.NewRow();
                            dr2["id"] = int.Parse(i.ToString() + j.ToString() + k.ToString());
                            dr2["pid"] = dr1["id"];
                            dr2["name"] = i + "_" + j + "_" + k;
                            dtlModel.Rows.Add(dr2);
                        }
                    }
                }
            }        private void BindTree(DataRow[] rows, TreeNode node) {
                foreach (DataRow r in rows) {
                    if (r["pid"] == DBNull.Value)
                        continue;                //如果是根结点,添加到TreeView控件
                    if (r["pid"].ToString() == "0") {
                        TreeNode node1 = new TreeNode();
                        node1.Text = string.Format("<input name='hd_{0}' type='hidden' value='{1}'/>{2}", r["id"], r["id"], r["name"].ToString());
                        node1.Value = r["id"].ToString();
                        
                        //node1.Target = "top";
                        TreeView1.Nodes.Add(node1);
                        BindTree(dtlModel.Select("pid=" + r["id"]), node1);
                    }
                    else if (node != null) {//否则添加到当前结点
                        TreeNode node1 = new TreeNode();
                        node1.Text = string.Format("<input name='hd_{0}' type='hidden' value='{1}'/>{2}", r["id"], r["id"], r["name"].ToString());
                        node1.Value = r["id"].ToString();
                        //node1.Target = "top";
                        node.ChildNodes.Add(node1);
                        BindTree(dtlModel.Select("pid=" + r["id"]), node1);//递归生成子树
                    }
                }
            }
      

  4.   

    请问你这个BindTree()方法怎么在程序初始的时候调用?
      

  5.   


    楼主的问题可以加我QQ465631791或者留言到本人邮箱[email protected],我会尽快回复以上图片中展示的功能都可以分享(注:早上9点到晚上9点是上班时间,无特殊情况,不能进行回复,谅解!!!!)
      

  6.   


    #region 添加所有节点
        private void AddNode()
        {
            //获取到所有信息
            DataTable dt = PurViewManager.GetAllPurView();
            //获取所有父节点
            DataRow[] drs = dt.Select("lbprior=0");
            for (int i = 0; i < drs.Length; i++)
            {
                TreeNode node = new TreeNode();
                node.Text = drs[i]["lbname"].ToString();
                node.Value = drs[i]["lbcode"].ToString();
                //添加子节点
                DataRow[] childdrs = dt.Select("lbprior=" + node.Value);
                for (int j = 0; j < childdrs.Length; j++)
                {
                    TreeNode childnode = new TreeNode();
                    childnode.Text = childdrs[j]["lbname"].ToString();
                    childnode.Value = childdrs[j]["lbcode"].ToString();
                    node.ChildNodes.Add(childnode);
                }            TreeView1.Nodes.Add(node);
            }
        }
      

  7.   

    第二种方法:先查出你那张表的所有信息到ds里面.然后调用下面的方法./// <summary>
        /// 创建DataSet的方法
        /// </summary>
        /// <param name="nodes">TreeView的根节点</param>
        /// <param name="ds">Dataset数据集合</param>
        /// <param name="pid">节点的父</param>
        private void CreateTreeView(TreeNodeCollection nodes, DataSet ds, int pid)
        {
            //定义筛选条件
            string sql = string.Format("lbcode={0}", pid);        //从Dataset中筛选符合条件的行的集合
            DataRow[] drr = ds.Tables[0].Select(sql);        //遍历获得行的集合
            foreach (DataRow dr in drr)
            {
                //创建TreeView节点
                TreeNode tnode = new TreeNode();
                //添加到根节点中
                nodes.Add(tnode);
                //设置显示的文本
                //tnode.ImageUrl = "images/foldericon1.gif";
                tnode.Text = dr["lbname"].ToString();
                tnode.Value = dr["lbcode"].ToString();
                //设置显示的路径
                tnode.NavigateUrl = dr["PurURL"].ToString();
                //递归调用方法
                CreateTreeView(tnode.ChildNodes, ds, Convert.ToInt32(dr["lbcode"]));
                //从Dataset中删除已经添加的行,提高访问效率
                ds.Tables[0].Rows.Remove(dr);        }
        }
      

  8.   

    数据库结构:   
      id            name              parentid 
      1             一级                 0 
      2             科技                 1 
      3             沈阳                 2 
      4             二级                 0 
      5             美食                 4 
      6             哈尔滨               5 
      7             三级                 0 
      8             美食                 7 
      9             大连                 8       private   void   LoadTree() 
           {
                treeView1.Nodes.Clear();     //先清空树 
                DataTable dt = ds.Tables[0]; //把表结构从数据库查出来放到DataTable中 
                //循环绑定父节点 
                foreach (DataRow dr in dt.Rows)
                {
                    //遍历加载父节点 
                    if (Convert.ToInt32(dr["parentid"]) == 0)
                    {
                        TreeNode newNode = new TreeNode(dr["name"].ToString());
                        treeView1.Nodes.Add(newNode);                    ChildLoad(dr, newNode, dt);
                    }                 
                }            this.treeView1.ExpandAll();
            }        //绑定子节点 
            private void ChildLoad(DataRow dr, TreeNode newNode, DataTable dt)
            {
                foreach (DataRow row in dt.Rows)
                {
                    if (Convert.ToInt32(dr["id"]) == Convert.ToInt32(row["parentid"]))
                    {
                        TreeNode childNode = new TreeNode();
                        childNode.Text = row["name"].ToString();
                        newNode.Nodes.Add(childNode);                    ChildLoad(row, childNode, dt);   //递归子节点 
                    }
                }
            }
      

  9.   

    您好,不好意思,下午有点忙,趁下班之前给你写了一个,实体如下:主要代码如下:
    ①初始化一个数据源:
            List<EntTestInfo> lstTest;
            private void TreeViewTest_Load(object sender, EventArgs e)
            {
                lstTest = new List<EntTestInfo>();
                lstTest.Add(new EntTestInfo(101, "根节点101", 0));
                lstTest.Add(new EntTestInfo(102, "根节点102", 0));
                lstTest.Add(new EntTestInfo(10101, "101的子节点1", 101));
                lstTest.Add(new EntTestInfo(10102, "101的子节点2", 101));
                lstTest.Add(new EntTestInfo(10201, "102的子节点1", 102));
                lstTest.Add(new EntTestInfo(10202, "102的子节点2", 102));
                lstTest.Add(new EntTestInfo(10203, "102的子节点3", 102));
            }
    ②:主要方法(递归思想)        /// <summary>
            /// 分类管理目录树展示
            /// </summary>
            /// <param name="iParentID">父节点编号</param>
            /// <param name="pNode">父节点</param>
            private void ShowTreeView(int iParentID, TreeNode pNode)
            {
                try
                {
                    //[ 把取得的分类信息形成目录树 ]
                    foreach (EntTestInfo ENI in lstTest)
                    {
                        //[ 判断是否有节点存在 ]
                        if (ENI.ParentID == iParentID)
                        {
                            //[ 有节点存在 ]
                            //[ 创建节点对象 ]
                            TreeNode treeNode = new TreeNode();
                            //[ 判断是否是根节点 ]
                            if (null == pNode)
                            {
                                //[ 是根节点 ]
                                //[ 创建根节点信息 ]
                                treeNode.Text = ENI.Name.ToString().Trim();
                                treeNode.Tag = ENI.ID.ToString().Trim();
                                //[ 添加根节点到目录树中 ]
                                tvTest.Nodes.Add(treeNode);
                                //[ 循环取得所有根节点并添加到目录树 ]
                                ShowTreeView(Convert.ToInt32(ENI.ID.ToString().Trim()), treeNode);
                            }
                            else
                            {
                                //[ 不是根节点 ]
                                //[ 创建所有子节点 ]
                                treeNode.Text = ENI.Name.ToString().Trim();
                                treeNode.Tag = ENI.ID.ToString().Trim();
                                //[ 添加叶节点到对应根节点 ]
                                pNode.Nodes.Add(treeNode);
                                //[ 循环取得此根节点下的所有子节点并添加到目录树 ]
                                ShowTreeView(Convert.ToInt32(ENI.ID.ToString().Trim()), treeNode);
                            }
                        }
                    }
                }
                catch (Exception)
                {
                }
            }
    ③在委托(事件)中调用:
            private void btnTest_Click(object sender, EventArgs e)
            {
                ShowTreeView(0, null);
            }如果还需要更复杂的功能,你把需求发我邮箱,尽快回复你,嘿嘿~!~  拜拜了  下班回家
      

  10.   

    点击gridControl某一行,对应树节点显示
           private void ParentTree()
            {
                tree_GongNeng.Nodes.Clear();//先清空树列表             DataALLGongNeng();//获取所有功能            GetQuanXianGongNeng(QuanXianID);//所选权限对应的功能
                //循环绑定父节点 
                foreach (DataRow dr in QuanXianGongNengDB.Rows)
                {
                    //遍历加载父节点 
                    if (Convert.ToInt32(dr["PModuleNo"]) == 0)
                    {
                        TreeNode newNode = new TreeNode(dr["name"].ToString());
                        tree_GongNeng.Nodes.Add(newNode);                    ChildLoad(dr, newNode, QuanXianGongNengDB);
                    }
                }            this.tree_GongNeng.ExpandAll();//展开树节点
            }        //绑定子节点 
            private void ChildLoad(DataRow dr, TreeNode newNode, DataTable dt)
            {
                foreach (DataRow row in dt.Rows)
                {
                    if (Convert.ToInt32(dr["ModuleNO"]) == Convert.ToInt32(row["PModuleNo"]))
                    {
                        TreeNode childNode = new TreeNode();
                        childNode.Text = row["name"].ToString();
                        newNode.Nodes.Add(childNode);                    ChildLoad(row, childNode, dt);   //递归子节点 
                    }
                }
            }