数据库中没有树形结构的数据表 单纯的信息表 2张表 一张“编制表”一张“信息表”
   teamid   teamname                       id        name   teamid
      1        一连                        10001      张三    1
      2        二连                        10002      李四    2通过数据库查询得到一连有哪些人  二连有哪些人  然后生成xml文件再把这个xml文件绑定到treeview控件上做导航!!!生成xml文件我找了2天没找到正确的方法!!!初学者不懂的太多了!

解决方案 »

  1.   

    TreeView绑定XML#region  绑定TreeView控件
        /// <summary>
        /// 绑定TreeView控件
        /// </summary>
        /// <param name="treeview">TreeView控件</param>
        /// <param name="xpath">查询条件</param>
        protected void BindTreeView(TreeView treeview, string xpath)
        {
            //声明XML数据源,供绑定TreeView控件时使用
            XmlDataSource datasource = new XmlDataSource();
            datasource.DataFile = Server.MapPath(".") + "/TreeMenu/TreeMenu.xml";
            if (xpath == "")
            {
                datasource.XPath = "/*/*";
            }
            else
            {
                datasource.XPath = xpath;
            }
            //添加TreeNodeBinding控件集合
            TreeNodeBinding binding1 = new TreeNodeBinding();
            binding1.DataMember = "TreeNodes";
            treeview.DataBindings.Add(binding1);        TreeNodeBinding binding2 = new TreeNodeBinding();
            binding2.DataMember = "TreeNode";
            binding2.TextField = "Text";
            binding2.NavigateUrlField = "URL";
            treeview.DataBindings.Add(binding2);        TreeNodeBinding binding3 = new TreeNodeBinding();
            binding3.DataMember = "Nodes";
            binding3.TextField = "Text";
            binding3.NavigateUrlField = "URL";
            treeview.DataBindings.Add(binding3);        TreeNodeBinding binding4 = new TreeNodeBinding();
            binding4.DataMember = "Node";
            binding4.TextField = "Text";
            binding4.NavigateUrlField = "URL";
            treeview.DataBindings.Add(binding4);
            //为TreeView控件的根目录绑定值
            treeview.DataBindings[0].DataMember = "TreeNodes";
            treeview.DataBindings[0].Text = "秦山三期OA系统";
            //为父级目录绑定值
            treeview.DataBindings[1].DataMember = "TreeNode";
            treeview.DataBindings[1].TextField = "Text";
            treeview.DataBindings[1].NavigateUrl = "URL";
            //为1级节点绑定值
            treeview.DataBindings[2].DataMember = "Nodes";
            treeview.DataBindings[2].TextField = "Text";
            treeview.DataBindings[2].NavigateUrlField = "URL";
            //为2级节点绑定值
            treeview.DataBindings[3].DataMember = "Node";
            treeview.DataBindings[3].TextField = "Text";
            treeview.DataBindings[3].NavigateUrlField = "URL";
            //绑定TreeView控件
            treeview.DataSource = datasource;
            treeview.DataBind();
        }
        #endregion
    private void ShowElement()
        {
            string xmlpath = Server.MapPath(".") + "/TreeMenu/TreeMenu.xml";
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(xmlpath);
            XmlNodeList nodeList = xmlDoc.SelectSingleNode("TreeNodes").ChildNodes;//获取TreeNodes节点的所有子节点
            //定义三个节点
            TreeNode treenode;
            TreeNode nodes;
            TreeNode node;
            //循环获取节点中属性ID的值
            foreach (XmlNode xn in nodeList)//遍历所有子节点
            {
                XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
                for (int m = 0; m < 3; m++)
                {                if (xe.GetAttribute("ID") == m.ToString())//如果ID属性值为m的值
                    {
                        treenode = new TreeNode(xe.GetAttribute("Text").ToString(),"","",xe.GetAttribute("URL").ToString(),"");                    this.TreeView1.Nodes.Add(treenode); //为树添加1级节点                    //Response.Write(xe.GetAttribute("Text").ToString() + "</br>");                    //如果下面有子节点在下走
                        XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
                        foreach (XmlNode xn1 in nls)//遍历
                        {
                            XmlElement xe2 = (XmlElement)xn1;//转换类型
                            if (xe2.Name == "Nodes")//如果找到
                            {
                                for (int i = 0; i < nls.Count; i++)
                                {
                                    //为2级节点添加子元素
                                    nodes = new TreeNode(nls.Item(i).Attributes[0].Value, "", "", nls.Item(i).Attributes[1].Value, "");
                                    treenode.ChildNodes.Add(nodes);
                                    //this.TreeView1.Nodes.Add(nodes);
                                    //Response.Write("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + nls.Item(i).Attributes[0].Value + "</br>");
                                    //如果下面有子节点再下走
                                    XmlNodeList nls1 = xe2.ChildNodes;//继续获取xe2子节点的所有子节点
                                    foreach (XmlNode xn2 in nls1)//遍历
                                    {
                                        XmlElement xe3 = (XmlElement)xn2;//转换类型
                                        if (xe3.Name == "Node")//如果找到
                                        {
                                            for (int j = 0; j < nls1.Count; j++)
                                            {
                                                //为3级节点添加子节点
                                                node = new TreeNode(nls1.Item(j).Attributes[0].Value, "", "", nls.Item(i).Attributes[1].Value, "");
                                                nodes.ChildNodes.Add(node);
                                                //Response.Write("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + nls1.Item(j).Attributes[0].Value + "</br>");
                                            }
                                            break;
                                        }
                                    }
                                }
                                break;
                            }
                        }
                        break;
                    }
                }
            }
        }