看了好多的无限分类.不是通篇理论,就是讲的一知半解的.
看了网上的列子后修改的.我个人觉得很使用.和动网新闻的分类效果一样的
如下:
数据库字段如下:
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();============
|--效果:
|----新闻
|------国内新闻
|--------地方新闻
|----------房产
看了网上的列子后修改的.我个人觉得很使用.和动网新闻的分类效果一样的
如下:
数据库字段如下:
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();============
|--效果:
|----新闻
|------国内新闻
|--------地方新闻
|----------房产
最好将数据装入DataTable 在DataTable 处理好然后在直接 ddl.DataBind();
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谢谢了啊!