BigClassID(标识列)
PBigClassID(判断是否根接点要根据这列,为0就是根点)
BigClassName(TREEVIEW要绑定的字段)代码如下:
    protected void Page_Load(object sender, EventArgs e)
    {
     if (!IsPostBack)
        { 
            PopulateTreeView();
        }
    }     private void PopulateTreeView()
    {
        DataTable treeViewData = GetTreeViewData();
        AddTopTreeViewNodes(treeViewData);
    }    private DataTable GetTreeViewData()
    {
       
        string cmd = "select BigClassID,PBigClassID,BigClassName from BigClassStru";
        string cn = "server=192.168.1.179;database=sky3;uid=sa;pwd=hp1502...";
        SqlDataAdapter dad = new SqlDataAdapter(cmd,cn);
        DataTable dtblBigClassStru = new DataTable();
        dad.Fill(dtblBigClassStru);
        return dtblBigClassStru;
    }    private void AddTopTreeViewNodes(DataTable treeViewData)
    {
        DataView view = new DataView(treeViewData);
        view.RowFilter = "PBigClassID is 0";
        foreach (DataView row in view)
        {
            TreeNode newNode = new TreeNode(row["BigClassName"].ToString(),row["PBigClassID"].ToString());
            TreeView1.Nodes.Add(newNode);
            AddChildTreeViewNodes(treeViewData,newNode);
        }
    }    private void AddChildTreeViewNodes(DataTable treeViewData,TreeNode parentTreeViewNode)
    {
        DataView view = new DataView(treeViewData);
        view.RowFilter = "PBigClassID=" + parentTreeViewNode.Value;
        foreach (DataRowView row in view)
        {
            TreeNode newNode = new TreeNode(row["BigClassName"].ToString(),row["BigClassID"].ToString());
            parentTreeViewNode.ChildNodes.Add(newNode);
            AddChildTreeViewNodes(treeViewData, newNode);
        }
    }

解决方案 »

  1.   

    现在一旦编译就出现问题
    错误提示:编译错误 
    说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误信息: CS1502: 与“System.Data.DataView.this[int]”最匹配的重载方法具有一些无效参数源错误:
        private void AddTopTreeViewNodes(DataTable treeViewData) 
        { 
            DataView view = new DataView(treeViewData); 
            view.RowFilter = "PBigClassID is 0"; 
            foreach (DataView row in view) 
            { 
                TreeNode newNode = new TreeNode(row["BigClassName"].ToString(),row["PBigClassID"].ToString()); 
                            TreeView1.Nodes.Add(newNode); 
                AddChildTreeViewNodes(treeViewData,newNode); 
            } 
      

  2.   


    protected void Page_Load(object sender, EventArgs e)
        {
            TreeBing();
        }    /// <summary>
        /// 树控件的绑定
        /// </summary>
        public void TreeBing()
        {        DataSet ds = srBll.TreeBing(Convert.ToInt32(LoginUser.CurrentUser.UserId), 0);
            DataTable dt = ds.Tables[0];
            foreach (DataRow row in dt.Rows)
            {
                TreeNode node = new TreeNode();
                node.Text = row["MenuName"].ToString();
                node.Target = "Main";
                node.Value = row["URL"].ToString();
                string sid = row["MenuID"].ToString();
                this.TVMenu.Nodes.Add(node);            TravelTree(node, sid);        }
        }
        /// <summary>
        /// 显示数据
        /// </summary>
        /// <param name="nodes"></param>
        /// <param name="id"></param>
        private void TravelTree(TreeNode nodes, string id)
        {
            DataTable dt = ds.Tables[0];
            foreach (DataRow row in dt.Rows)
            {
                TreeNode node = new TreeNode();
                node.Text = row["MenuName"].ToString();
                node.Target = "Main";
                node.Value = row["URL"].ToString();
                string sid = row["MenuID"].ToString();            nodes.ChildNodes.Add(node);
                TravelTree(node, sid);
            }    }
      

  3.   

    id   name   pid 
    1    中国    0 
    2    日本    0 
    3    湖南    1 
    4    湖北    1 
    5    东京    2 
    6    长崎    2 
      

  4.   

    我发红字的地方看到了吧。
    他不让我转型,我要转STRING 他提示无法转换成INT
    这个实在让我无解TreeNode.TreeNode(string text,string value)
    这个没有错吧
      

  5.   

    TreeNode newNode = new TreeNode(row[0].ToString(),row[1].ToString()); 
      

  6.   

    晕,看错了
     foreach (DataRowView row in view)  
            {  
                TreeNode newNode = new TreeNode(row["BigClassName"].ToString(),row["PBigClassID"].ToString());  
                            TreeView1.Nodes.Add(newNode);  
                AddChildTreeViewNodes(treeViewData,newNode);  
            }  
      

  7.   

    感谢8楼,结帖了!
    我实在很奇怪!我根节点用了你的方法 就OK 了
    我子节点还是延用我自己的方法
    TreeNode newNode = new TreeNode(row["BigClassName"].ToString(),row["BigClassID"].ToString());
    上面通不过,居然下面能通过,让我感到很神奇。