我有三个表
期刊表(期刊号)
栏目表(栏目名称,栏目序号,期刊号)
文章表(文章id,文章名称,栏目序号)可是就是显示不了,下面哪里错了,请大家帮帮忙private void bindtree(TreeNodeCollection Nds)
{
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString);
    con.Open();
    string sql = "select * from journal where jstate='建设中'";
    //string sql = "select jname from journal where jname='200902'";   
    //SqlCommand cmd = new SqlCommand(sql, con);    SqlDataAdapter adapter = new SqlDataAdapter(sql, con);
    DataSet ds = new DataSet();
    adapter.Fill(ds, "journal");
   DataView dv=ds.Tables[0].DefaultView;   
   TreeNode tn;
   string jname;
   foreach(DataRowView dr in dv)
   {
    jname=dr["jname"].ToString();//当前ID
    //if (strID!="")
    //{
     tn=new TreeNode();
     tn.Value = dr["jname"].ToString();
     tn.Text = dr["jname"].ToString();
     tn.Expanded=true;//是否展开
     Nds.Add(tn);
     bindtree1(Nds[Nds.Count - 1].ChildNodes, jname);//绑定二级
    }
   }
     private void bindtree1(TreeNodeCollection Nds, string jname)
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString);
        con.Open();
        string sql = "select * from lanmu where jname=(" + jname + ")";
        SqlCommand cmd = new SqlCommand(sql, con);
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        adapter.Fill(ds, "lanmu");
        DataView dv = ds.Tables[0].DefaultView;
        TreeNode tn;
        string lid;
        foreach (DataRowView dr in dv)
        {
            lid = dr["lid"].ToString();//当前ID
            if (jname!="")
            {
            tn = new TreeNode();
            tn.Value = dr["lid"].ToString();            tn.Text = dr["lname"].ToString();
            tn.Expanded = true;//是否展开
            Nds.Add(tn);
            bindtree1(Nds[Nds.Count - 1].ChildNodes, lid);//绑定二级
}  
        }
    }    private void bindtree2(TreeNodeCollection Nds, string lid)
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString);
        con.Open();
        string sql = "select * from articles where lid=(" + lid + ")";
        SqlCommand cmd = new SqlCommand(sql, con);
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        adapter.Fill(ds, "articles");
        DataView dv = ds.Tables[0].DefaultView;
        TreeNode tn;
        string arid;
        foreach (DataRowView dr in dv)
        {
            arid = dr["lid"].ToString();//当前ID
            if (lid!= "")
            {
                tn = new TreeNode();
                tn.Value = dr["arid"].ToString();
                tn.Text = dr["atitle"].ToString();
                tn.NavigateUrl = dr["showartile.aspx"].ToString(); //如果有链接    
                //tn.Expanded=true;//是否展开
                Nds.Add(tn);
                //bindtree3(Nds[Nds.Count-1].Nodes,littleclassid);//如果还有下一级
            }
        }
    }

解决方案 »

  1.   

    你下面那个方法调用了么?
    bindtree1(Nds[Nds.Count - 1].ChildNodes, lid);//绑定二级 
    应该是绑定第3级了
      

  2.   

    我绑了bindtree2  还是没有显示树
      

  3.   

    太长了,大致看了一下!!!
    你何必那么麻烦!!
    期刊表(期刊号) 
    栏目表(栏目名称,栏目序号,期刊号) 
    文章表(文章id,文章名称,栏目序号)
    三层循环添加如
    for(期刊表)
    {    
      添加节点a   
     for(栏目表的期刊号==当前循环到期刊表的期刊号)    
     {        
       添加到节点a的子节点b         
      for(文章表的栏目序号==当前循环到栏目表的栏目序号)        
      {          
        添加到节点b的子节点        
      }
     }
    }看明白了吗!?
      

  4.   

    A节<-B节<-C节  循环添加就ok了 第二级都加上了 第三级肯定没什么问题撒 多调试跟踪下代码