private void InitTreeView()
    {
            for (int i=0;i<GetBigType ().Rows .Count ;i ++)
            {
DataTable dt=GetBigType();
                  TreeNode node = new TreeNode();
                  node.Expanded = false;//设置节点是否展开,取反
                //look this code run 
                node.Text =dt.rows[i]["bigname"].ToString ();
                node.Value = dt.Rows[i]["TradeBigTypeid"].ToString();
                this.MyTreeView.Nodes.Add(node);
                        
            }           
    }这是一级绑定到节点里.
   //一级节点
     public DataTable  GetBigType() 
     {         
         using(SqlConnection con=new SqlConnection (MCommon.ConnectString ))
         {
             con.Open ();
             string sql="select * from TradeBigType where status=1";
            SqlCommand  cmd=new SqlCommand (sql,con);
             SqlDataAdapter ada=new SqlDataAdapter (cmd);
             DataTable dt=new DataTable ();
             ada.Fill (dt);
            return dt;
         }
     }
     //二级节点    public DataTable GetMidType(string bigname)
    {
        using (SqlConnection con = new SqlConnection(MCommon.ConnectString))
        {
            con.Open();
            string sql = "select * from trademidtype where bigtradeid=(select tradebigtypeid from tradebigtype where bigname='" + bigname + "')";
            SqlCommand cmd = new SqlCommand(sql, con);
            SqlDataAdapter ada = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            ada.Fill(dt);
            return dt;
        }
    }    //三级节点
    public DataTable GetSmallType(string bigname,string midname)
    {
        using (SqlConnection con = new SqlConnection(MCommon.ConnectString))
        {
            con.Open();
            string sql = "select * from TradeSmallType where bigid=(select tradebigtypeid from tradebigtype where bigname='" + bigname + "') and midid=(select trademidtypeid from trademidtype where midname='" + midname + "')";
            SqlCommand cmd = new SqlCommand(sql, con);
            SqlDataAdapter ada = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            ada.Fill(dt);
            return dt;
        }
    }这是我用到的得到数据的方法  都要传参数的,但是我不知道怎么把他们加到树里面的二级三级里去了各位路过的高手,能不能就这我这几个方法把二级 三级绑到树里去,小女子在这里先谢谢各位了

解决方案 »

  1.   

    C#:
    ----------------------------------------------
    protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                this.NodeBind();//页面加载时解析数据库绑定TreeNode根节点
                this.DisPanel(true);//显示或不显示
            }
        }    #region//数据库连接字符串
        public void conString()
        {
            string conStr = "server=.;uid=sa;pwd=;database=Demo";
            con = new SqlConnection(conStr);
        }
        #endregion    #region//页面加载时绑定TreeNode根节点
        public void NodeBind()
        {
            this.tvadd.Nodes[0].ChildNodes.Clear();//清空TreeView中所有节点
            this.tvadd.Nodes[0].Expanded = true;//设置根节点为展开形式
            this.AddChildNode("NULL",this.tvadd.Nodes[0]);
        }
        #endregion    #region//递归解析数据库中节点并绑定在TreeView控件上
        /// <summary>
        /// 递归解析数据库中节点并绑定在TreeView控件上
        /// </summary>
        /// <param name="sqltj">要解析库这个节点归属于哪个父节点</param>
        /// <param name="tn">要添加下一级节点的父节点</param>
        public void AddChildNode(string sqltj,TreeNode tn)
        {
            string sql = "select * from AddNodes where ParentID";//查询该父节点下还有无子节点SQL语句
            if (sqltj == "NULL")
            {
                sql += " IS NULL";//也就是说是根节点下面的第一级子节点
            }
            else
            {
                sql += "=" + sqltj;//查询sqltj下有无子节点
            }
            
            DataTable dt = this.dtDataBind(sql);
            if (dt.Rows.Count == 0)//说明此节点下无子节点
            {
                return;//退出
            }
            else
            {
                for (int i = 0; i < dt.Rows.Count; i++)//循环DataTable表中子节点记录
                {
                    TreeNode tnchild = new TreeNode();//创建新的子节点
                    tnchild.Text = dt.Rows[i][1].ToString();//为新建子节点的文本赋值
                    tnchild.Value = dt.Rows[i][1].ToString();//为新建子节点的Value赋值
                    tnchild.Expanded = true;//设置为不展开节点
                    tn.ChildNodes.Add(tnchild);//添加此节点的下一级子节点
                    //递归调用,一直往下直到添加完这一级下面的所有子节点为止,再转到下一个父节点,并添加所有此父节点下面的所有子节点
                    //i代表DataTable表中循环记录,0代表取得这个记录的ID值,为下面继续检查这个ID下是否还有子目录
                    //tnchild递归传递给下一次调用此方法,此时如果这个节点下还有子节点,它便成为父节点,对它下面的子节点进行添加
                    this.AddChildNode(dt.Rows[i][0].ToString(),tnchild);
                }
            }
        }
        #endregion    #region//绑定DataTable表
        public DataTable dtDataBind(string sql)
        {
            this.conString();
            da = new SqlDataAdapter(sql,con);
            dt = new DataTable();
            da.Fill(dt);
            return dt;
        }
        #endregion
      

  2.   

    sqlserver库设计:
    -------------------------------------------------------------
    ChildNodeID(主键 int)     ChildNodeType(varchar)    ParentID(int)
          1                          a                     <null>
          2                          b                     <null>
          3                          a1                      1
          4                          a2                      1
          5                          b1                      2生成代码:
    ------------------------------------------------------------------------
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AddNodes]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[AddNodes]
    GOCREATE TABLE [dbo].[AddNodes] (
    [ChildNodeID] [int] IDENTITY (1, 1) NOT NULL ,
    [ChildNodeType] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [ParentID] [int] NULL 
    ) ON [PRIMARY]
    GO其实C#的代码就是做了一下递归
    sqlserver中设计的表 就是做了个字典表
      

  3.   

    读数据库的部分,搂主自己改改
    --------------------------------------------
    private void InitReportMenu()
        {
            try
            {            DataSet ds = GetDataFromDB(strCD);
                if (!ds.Tables[0].Rows.Count.Equals(0))
                {
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        TreeNode menuNode = new TreeNode();                    menuNode.Text = ds.Tables[0].Rows[i]["Name"].ToString();                    menuNode.Value = ds.Tables[0].Rows[i]["Code"].ToString();                    TreeView1.Nodes.Add(menuNode);
                        //二級
                        addchildmenu1(menuNode, menuNode.Value);
                    }
                }
               
            }
            catch
            {
                throw;
            }
        }    private void addchildmenu1(TreeNode node, string strID)
        {        DataSet ds = GetDateFromDB(strID);        if (!ds.Tables[0].Rows.Count.Equals(0))
            {
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    TreeNode menuNode = new TreeNode();               menuNode.Text= ds.Tables[0].Rows[i]["NAME"].ToString();
                    
                    menuNode.Value = ds.Tables[0].Rows[i]["CODE"].ToString();
                    node.ChildNodes.Add(menuNode);
                }
            }
        }