我虽然不知道你怎么弄的!但大概意思我懂了!
我给点意见:第一你数据库设计有问题 -------推荐
如果类下面还有小类就分开设置
把class主键设成ID  然后在做一个表加一个外键连接到class中的主键不就行了第2个方法是很傻的。
另外一个就是查询语句可以做到。
你先select id from class where name="a%" 然后把第一条数据做为大类放在一起。

解决方案 »

  1.   

    最简单的办法:增加一个排序字段,手工维护数据。自动一点的:增加一个排序字段, 使用存储过程填充数据,数据填充成
       id       name     bid       sort
    1         a             0      1
    2         b             0      2
    3         a1           1       1-3
    4         a11         3        1-3-4
    5         b1           2       2-5 
    算法是全数据循环,规则:
    a)当bid=0时,sort设置为id号 
    b)当bid指向的父记录sort有值的时候,当前记录的sort设置为 父记录的sort + “-” + id ,否则跳过不做。 
    c)重复做,直到所有的记录的sort都有值为止。  
    d)避免无限循环,加个最大循环次数,到达最大循环次数时退出循环。
    当然不使用存储过程也可以,用dataset也能实现这个算法。这个算法的循环次数受树深度的影响,深度越少,速度越快。沿用现有做法的: 动态生成<option 的字符串, 算法是:先生成根节点的option, 然后递归生成子节点的option,
     最后拼接整个字符串,写到<select>标签里。 
      

  2.   


    select name+'('+ 
    (case bid when 0 then '大类' else (select name+'下面的分类' from class b where b.id=a.bid) end)
    +')' from class a
      

  3.   

    那如果我要是这样该怎么实现呢?
    <select   id=select1> 
    <option  value=""> 请选择类别 </option> 
    <option   value=""> a</option>
    <option   value=""> b</option> 
    </select>在.net中怎么实现呢,我知道SQL语句怎么写,我想请教的是这里的
    <option  value=""> 请选择类别 </option>
    该怎么加进去呢?
    在.net下面有一个DropDownList控件,能很好的把数据列表进去,请看<form id="form1" runat="server">
            <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource1" DataTextField="name" DataValueField="id">
            </asp:DropDownList><asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Data Source=(local);Initial Catalog=d_base;Persist Security Info=True;User ID=sa;Password=sa"
                ProviderName="System.Data.SqlClient" SelectCommand="SELECT [id], [name] FROM [Class]WHERE [BID]=0">
            </asp:SqlDataSource>
        </form>这样可以读出所有分类的列表,但我遇到的问题是,我该怎么把上面的一个项目,“请选择类别”并给它赋值为0,显示在这个DropDownList中呢?请指导下,谢谢
      

  4.   

    改成代码绑定,在绑定之前加到结果集里即可
    DataSet ds = ....;DataRow dr = ds.Tables[0].NewRow();
    dr["Text"] = "请选择类别";
    dr["Value"] = "0";ds.Tables[0].Rows.InsertAt(dr, 0);DropDownList1.DataSource = ds.Table[0];
    DropDownList1.DataTextField = "Text";
    DropDownList1.DataValueField = "Id";
    DropDownList1.DataBind();
      

  5.   

    递归一下吧,如果嫌在数据库多次操作不方便,可以order by bid一次取出到DataSet中,写个递归小过程。