protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection con = DB.Myclass();
        con.Open();
      
        
        SqlCommand cmd = new SqlCommand("select *from department", con);
        SqlDataReader red = cmd.ExecuteReader();
        TreeNode tt = new TreeNode();
        tt.Text = "请选择部门:";
        tr1.Nodes.Add(tt);
       
        while (red.Read())
        {
           
            TreeNode tn = new TreeNode();
            tn.Value = red.GetInt32(0).ToString();
            tn.Text = red.GetString(1);
            tt.ChildNodes.Add(tn);
   
        }
        red.Close();
        foreach (TreeNode tz in this.tr1.Nodes)
        {            //int a = Convert.ToInt32(tz.Value);
            SqlCommand cmdd = new SqlCommand("select *from ren where rid = " + a, con);
            SqlDataReader redd = cmdd.ExecuteReader();
            while (redd.Read())
            {
                TreeNode tk =new TreeNode();
                tk.Text = redd.GetString(2);
                tk.Value = redd.GetInt32(1).ToString();
                tz.ChildNodes.Add(tk);
            }            redd.Close();
        }
      
        con.Close();
    }
两个问题:
1.int a = Convert.ToInt32(tz.Value);提示"输入字符串的格式不正确";
2.把a直接为1,出现结果没有分层

解决方案 »

  1.   

    1 最高级的节点没有指定value-----难免有错,错了莫怪.
      

  2.   

    private void _BindTree()
            {
                if (this.TreeView1.Nodes.Count > 0)
                    this.TreeView1.Nodes.Clear();            DataTable TreeView1 = DataClass.ExecuteDataTable("select * from t_Dept");
                DataRow[] rows = TreeView1.Select("ParentID = 0");
                for (int i = 0; i < rows.Length; i++)
                {
                    TreeNode node = new TreeNode();
                    node.Text = rows[i]["deptName"].ToString();
                    //node.ImageUrl ="../images/house.ico";
                    node.Value = rows[i]["Id"].ToString();
                    // node.Value = "9999";
                    this.TreeView1.Nodes.Add(node);
                    this.AddChildNodes(ref TreeView1, ref node);            }            this.TreeView1.DataBind();        }        private void AddChildNodes(ref DataTable TreeView1, ref TreeNode node)
            {
                DataRow[] rows = TreeView1.Select("ParentID=" + node.Value);
                for (int i = 0; i < rows.Length; i++)
                {
                    TreeNode NewNode = new TreeNode();
                    NewNode.Text = rows[i]["deptName"].ToString();
                    //NewNode.ImageUrl ="../images/house.ico";
                    NewNode.SelectAction = TreeNodeSelectAction.Select;
                    NewNode.Value = rows[i]["ID"].ToString();
                    //NewNode.Value = "888888";
                    this.AddChildNodes(ref TreeView1, ref NewNode);
                    node.ChildNodes.Add(NewNode);            }
            }-----难免有错,错了莫怪.
      

  3.   

    1.int a = Convert.ToInt32(tz.Value);提示"输入字符串的格式不正确";
    这里的tz.Value你没有设置值为null,当你转换null时,提示错误是正常的。
    2.把a直接为1,出现结果没有分层
    首先你要确认ren表中的rid有等于1的,如果没有,怎么可能会分层呢?
    //可以手工修改几条数据的rid=1试试。肯定可以加载记录的想要分层,要把二个表中的父子关系搞好了,再加载也就没有问题了。