private void FormCustomerInformation_Load(object sender, EventArgs e)
        {
            string sqlstr = "select * from T_BasicInformation_District";
            SqlDataAdapter SDA = new SqlDataAdapter(sqlstr,public_sql.getcon());
            DataTable DT = new DataTable();
            SDA.Fill(DT);
            for (int i = 0; i < DT.Rows.Count; i++)
            {
                TreeNode TN = new TreeNode();
                TN.Text = DT.Rows[i][1].ToString();
                TN.Tag = DT.Rows[i][0].ToString();
                treeView1.Nodes.Add(TN);
                addchildmenu1(TN);            }  
   this.shuaxindgv();
        }
        public void addchildmenu1(TreeNode node)
        {
            string sqlstrl = "SELECT FCompanyName,FDistrictID from T_BasicInformation_Customer";
            SqlDataAdapter sda = new SqlDataAdapter(sqlstrl, public_sql.getcon());
            DataTable dt = new DataTable();
            sda.Fill(dt);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                TreeNode TN = new TreeNode();
                TN.Text = dt.Rows[i][0].ToString();
                TN.Tag = dt.Rows[i][1].ToString();
                node.Nodes.Add(TN);
做标记的地方  具有相同的标签  
怎么让子节点的标签 与 父节点标签 相同时
显示在父节点下??

解决方案 »

  1.   

    遍历Treeview找出Tag一样的,放在TreeNode下面
      

  2.   

    看这段代码。。
    /// <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("ParentID={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["PurName"].ToString();
                tnode.Value = dr["PurID"].ToString();
                //设置显示的路径
                tnode.NavigateUrl = dr["PurURL"].ToString();
                //递归调用方法
                CreateTreeView(tnode.ChildNodes, ds, Convert.ToInt32(dr["PurID"]));
                //从Dataset中删除已经添加的行,提高访问效率
                ds.Tables[0].Rows.Remove(dr);        }
        }
      

  3.   

      //定义一个根节点。
                TreeNode t = new TreeNode();
                t.Text = "图书管理系统";            //定义一个图书信息管理节点。
                TreeNode tc = new TreeNode();
                tc.Text ="图书信息管理";
                t.ChildNodes.Add(tc);            TreeNode tc1 = new TreeNode();
                tc1.Text = "增加图书信息";
                tc1.NavigateUrl = "insertBookInformation.aspx";
                tc1.Target = "main";
                tc.ChildNodes.Add(tc1);            TreeNode tc2 = new TreeNode();
                tc2.Text = "查询图书信息";
                tc2.NavigateUrl = "selectBookInformation.aspx";
                tc2.Target = "main";
                tc.ChildNodes.Add(tc2);
      

  4.   

            private DataTable dt = null;
            private void button1_Click(object sender, EventArgs e)
            {
                 dt = new DataTable();
                dt.Columns.Add("ID",typeof(System.Int32));
                dt.Columns.Add("ParentID",typeof(System.Int32));
                dt.Columns.Add("Name");            DataRow dr = dt.NewRow();
                dr[0] = 1;
                dr[1] = 0;
                dr[2] = "Test1";
                dt.Rows.Add(dr);            dr = dt.NewRow();
                dr[0] = 2;
                dr[1] = 0;
                dr[2] = "Test2";
                dt.Rows.Add(dr);            dr = dt.NewRow();
                dr[0] = 3;
                dr[1] = 1;
                dr[2] = "Test3";
                dt.Rows.Add(dr);            dr = dt.NewRow();
                dr[0] = 4;
                dr[1] = 2;
                dr[2] = "Test4";
                dt.Rows.Add(dr);            dr = dt.NewRow();
                dr[0] = 5;
                dr[1] = 3;
                dr[2] = "Test5";
                dt.Rows.Add(dr);            dr = dt.NewRow();
                dr[0] = 6;
                dr[1] = 5;
                dr[2] = "Test6";
                dt.Rows.Add(dr);            DataRow[] drs = dt.Select("ParentID = 0");
                TreeNode TopNode = null;
                foreach (DataRow tmpdr in drs)
                {
                    TopNode = new TreeNode();
                    TopNode.Text = tmpdr[2].ToString();
                    TopNode.Tag = tmpdr[0].ToString();
                    TopNode = GetNode(TopNode);
                    this.treeView1.Nodes.Add(TopNode);
                }        }
            private TreeNode GetNode(TreeNode TopNode)
            {
                int ParentID = Convert.ToInt32( TopNode.Tag.ToString());
                DataRow[] drs = dt.Select("ParentID = " + ParentID.ToString());
                if (drs != null && drs.Length > 0)
                {
                    TreeNode ChildNode = null;
                    foreach (DataRow dr in drs)
                    {
                        ChildNode = new TreeNode();
                        ChildNode.Text = dr[2].ToString();
                        ChildNode.Tag = dr[0].ToString();
                        ChildNode = GetNode(ChildNode);
                        TopNode.Nodes.Add(ChildNode);
                    }
                    return TopNode;
                }
                else
                {
                    return TopNode;
                }
            }
    呵呵,撮合着用
      

  5.   

    如果已经知道顶级节点的Tag的话
    这样省点代码
                TreeNode TopNode = null;
                TopNode = new TreeNode();
                TopNode.Text = "Test";
                TopNode.Tag = 0;
                TopNode = GetNode(TopNode);
                this.treeView1.Nodes.Add(TopNode);