用Repeater控件  ,以下列方式显示到网页上 !!
主类
   |- 子类
         |- 孙子类
                 |- 重孙子类
                 |- 重孙子类
         |- 孙子类
   |- 子类
         |- 孙子类
                 |- 重孙子类
                 |- 重孙子类
         |- 孙子类
主类
   |- 子类
         |- 孙子类
         |- 孙子类
   |- 子类
         |- 孙子类
         |- 孙子类
主类
   |- 子类
   |- 子类
         |- 孙子类
         |- 孙子类
主类
   |- 子类
   |- 子类
         |- 孙子类
         |- 孙子类
                 |- 重孙子类
                 |- 重孙子类

解决方案 »

  1.   

    用label显示吧,把他写在用户控减里面,再在页面中调用他就行了!
      

  2.   

    我写的一个例子,你参考一下:
    public void bind()
    {
    /*
    dataoperate dp=new dataoperate();
    dp.DataOperSqlstr="select * from lanmu";
    */以上为数据操作过程,在你的分类表中返回其一个数据集。(根据情况适当修改)
    DataSet ds1=dp.selectds("fj1");
    this.ViewState["ds"]=ds1; 
    Addlist(0, (ListItem)null);
    }
    // 递归添加列表项的节点的方法(我把信息放在了一个DropDownList3中)
    public void Addlist(int ParentID,ListItem lt) 
    {
    DataSet ds=(DataSet) this.ViewState["ds"]; 
    DataView dvTree = new DataView(ds.Tables[0]);
    //过滤ParentID,得到当前的所有子节点
    dvTree.RowFilter =  "[fatherid] = " + ParentID;
               
    foreach(DataRowView Row in dvTree) 
    {
    ListItem ltm=new ListItem();
    if(lt == null) 
    {   
    //'?添加根节点
    ltm.Text=Row["name"].ToString();
    ltm.Value=Row["id"].ToString();
                        DropDownList3.Items.Add(ltm);
    Addlist(Int32.Parse(Row["ID"].ToString()),ltm); } 
    else 
    {   //添加当前节点的子节点
    string zwf="-";
    for (int i=0;i<Convert.ToInt32(Row["classid"].ToString());i++)
    {
                            zwf+=zwf;
    }
    ltm.Text=zwf+Row["name"].ToString();
    ltm.Value=Row["id"].ToString();
    DropDownList3.Items.Add(ltm);
    Addlist(Int32.Parse(Row["ID"].ToString()),ltm);
    }
    }                   
    }