學校    班級   姓名
南大  數學系    張三
南大  語文系    李四
北大  數學系    王五
北大  數學系    趙六
南航  數學系    錢七TreeView三級目錄如何實現,根目錄為學校,二級目錄為班級,三級目錄為姓名以下代碼已經實現,就是比較笨拙,數據量比較大,顯示慢,想利用ds.Tables[0].Select(" ") 減少數據庫的讀寫次數   SqlTools sqt=new SqlTools();
 private void Page_Load(object sender, System.EventArgs e)
    {
        Bind_TreeView(TreeView1, "End_Cust_Name");
    }     public void Bind_TreeView(TreeView treeview, string text)
          {
              string strsql = @"select DISTINCT End_Cust_Name from Part_Proj_Cust_V where isnull(End_Cust_Code,'')<>''";
             // string strsql = @"select  * from Part_Proj_Cust_V where isnull(End_Cust_Code,'')<>'' ";
            DataSet ds=sqt.ExecuteDataSet(strsql);
         // DataRow[] drs = ds.Tables[0].Select(" ");
           
                       treeview.Nodes.Clear();
             for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
             {
                 TreeNode rootnode = new TreeNode();//创建根节点
                 rootnode.Text = ds.Tables[0].Rows[i][text].ToString();
                 
                 treeview.Nodes.Add(rootnode);//在添加完节点的内容之后,当然要添加根节点,
                 rootnode.Expanded = false;
                 CreateChildNodes(rootnode, text, "Project_Name", rootnode.Text);//DsPNode.Tables[0].Rows[i][text].ToString()
              }
         }
     public void CreateChildNodes(TreeNode treenode, string parentName, string text, string index)
          {
      
            string strsql = "select DISTINCT Project_Name from Part_Proj_Cust_V where isnull(End_Cust_Code,'')<>''  and End_Cust_Name= '" + index + "'";    
            DataSet ds = sqt.ExecuteDataSet(strsql);
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
             {
                 TreeNode childnode = new TreeNode();
                 childnode.Text = ds.Tables[0].Rows[i][text].ToString();
                 treenode.ChildNodes.Add(childnode);
                 childnode.Expanded = false;
                 CreateGrandsonNodes(childnode, text, "Part_NO", childnode.Text);
              }
         }
      public void CreateGrandsonNodes(TreeNode treenode, string parentName, string text, string index)
          {             string strsql = "select DISTINCT Part_NO from Part_Proj_Cust_V where isnull(End_Cust_Code,'')<>''  and Project_Name= '" + index + "'";
             DataSet ds = sqt.ExecuteDataSet(strsql);             for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
             {
                TreeNode childnode = new TreeNode();
                 childnode.Text = ds.Tables[0].Rows[i][text].ToString();
                 treenode.ChildNodes.Add(childnode);
             }
         }

解决方案 »

  1.   

    // DataRow[] drs = ds.Tables[0].Select(" ");这里填你的搜索条件啊。Type="班级"然后在type="学生" and classid=班级ID给你个最简单的例子
    string strcon = "server=.;database=pubs;uid=sa;pwd=sa";
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.GridView1.DataSource = returndepartment();
                this.GridView1.DataBind();
                this.TreeView1.ShowLines = true;
                this.TreeView1.ExpandDepth = 1;            TreeNode tr1 = new TreeNode("系部");
                TreeView1.Nodes.Add(tr1);
                DataSet ds1 = new DataSet();
                ds1 = returndepartment();
                for (int i = 0; i < ds1.Tables["department"].Rows.Count; i++)
                {
                    TreeNode tr2=new TreeNode(ds1.Tables["department"].Rows[i]["departmentName"].ToString(),ds1.Tables["department"].Rows[i]["departmentID"].ToString());
                    tr1.ChildNodes.Add(tr2);
                    DataSet ds2 = new DataSet();
                    ds2 = returnclass(int.Parse(tr2.Value));
                    for (int j = 0; j < ds2.Tables["class"].Rows.Count; j++)
                    {
                        TreeNode tn3 = new TreeNode(ds2.Tables["class"].Rows[j]["className"].ToString(), ds2.Tables["class"].Rows[j]["classID"].ToString());
                        tr2.ChildNodes.Add(tn3);
                    }
                }
               
            }
        }
        public DataSet returndepartment()
        {
            using (SqlConnection cn = new SqlConnection(strcon))
            {
                SqlDataAdapter da = new SqlDataAdapter("select * from department", cn);
                DataSet ds = new DataSet();
                da.Fill(ds,"department");
                return ds;
            }
        }
        public DataSet returnclass(int id)
        {
            using (SqlConnection cn = new SqlConnection(strcon))
            {
                SqlDataAdapter da = new SqlDataAdapter("select * from class where departmentID='"+id+"'", cn);
                DataSet ds = new DataSet();
                da.Fill(ds, "class");
                return ds;
            }
        }    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
        {
            this.Label1.Text = this.TreeView1.SelectedValue;        if (this.TreeView1.SelectedValue == "1001")
            {
                Response.Write("软件一系");
            }
            else if (this.TreeView1.SelectedValue == "1002")
            {
                Response.Write("软件二系");
            }
            else if (this.TreeView1.SelectedValue == "1003")
            {
                Response.Write("软件三系");
            }
            else if (this.TreeView1.SelectedValue == "700111")
            {
                Response.Write("软件二系 一班");
            }
            else
            {
                Response.Write("软件四系");
            }
        }递归private void TreeRules(DataTable dtP, TreeNode tnP, string strChildID) 

    DataRow[] drC; 
    drC = dtP.Select("parentid='" + strChildID + "'"); 
    if (drC.Length > 0) 

    foreach (DataRow drr in drC) 

    TreeNode tnC = new TreeNode(); 
    tnC.Text = drr["NodeName"].ToString(); 
    tnC.Value = drr["childID"].ToString(); 
    if (drr["NavigateUrl"] != "") 

    tnC.NavigateUrl = drr["NavigateUrl"].ToString(); 
    tnC.Target = "Main"; 

    tnP.ChildNodes.Add(tnC); 
    TreeRules(dtP, tnC, drr["childID"].ToString()); 


    else 

    return;