看了好多的无限分类.不是通篇理论,就是讲的一知半解的.
看了网上的列子后修改的.我个人觉得很使用.和动网新闻的分类效果一样的
如下:
数据库字段如下:
ClassID(int)  ParentID(int)默认为0  ClassName(char)
  1         0         新闻
  2         1        国内新闻
  3         2        地方新闻
  4         3                 房产 
===========================
public ArrayList al=new ArrayList();
public int j=0;
public int i=0;
//使用递归的方法.
public void getID(int ID)
{
SqlDataReader dr;
string temp=null;
dr=SqlHelper.ExecuteReader(conn,CommandType.Text,"select * from myclass where parentID="+ID);
while(dr.Read())
{
i=i+1;
for(int j=i;j>=2;j--)
{
temp=temp+"--";
//Response.End();
}
al.Add("|--"+temp+dr1["className"].ToString());
getID(Convert.ToInt32(dr1["ClassName"]));
}
i--;
}=============
调用的时候
getID(0);//0就是第一级
ArrayList dr11=new ArrayList(al);
DropDownList1.DataSource=dr11;
DropDownList1.DataBind();============
|--效果:
|----新闻
|------国内新闻
|--------地方新闻
|----------房产

解决方案 »

  1.   

    贴上的时候,忘了把dr1改为dr了.
      

  2.   

    很好,不过你的方法还差点,如果第一个父级分类的子分类交叉、排序在其他父级分类之下,而你这里用DataReader显然不能很好的进行排序。
    最好将数据装入DataTable 在DataTable 处理好然后在直接 ddl.DataBind();
      

  3.   

    CnEve(龙哥哥)朋友,不知道你说的什么交叉.我怎么没发现这样的情况啊!能不能把你交叉的数据贴上来啊!我也做了一个交叉
    classID   className   ParentID
      1           a1          0
      2           b1          0
      16          b2          2
      17          a2          1
      20          a3          16
      19          b3          17
    我得到的结果是这样的 a1
    |-a2
    |--a3
    b1
    |-b2
    |--b3谢谢了啊!
      

  4.   

    我发现了.是这样的问题.不知道有什么好的方法.用DateTable怎么弄啊!