asp.net无限递归分类问题,新手请教。。。
我想做个无限级的子分类
数码
--手机
---诺基亚
----920
服装
--鞋子
---运动鞋
按这个样子来嵌套显示,,我的源代码是
Response.Write("<select name=\"category\" value=\"0\">\n");
if (dt.Rows.Count > 1)
{
//第一层开始
foreach (DataRow dr in dt.Rows)
{
Response.Write("<option value=\"" + dr["id"].ToString() + "\">" + dr["name"].ToString() + "</option>\n");
//第二层开始
DataTable dt1 = ad.SelectCategory(dr["id"].ToString());
if (dt1.Rows.Count > 0)
{
foreach (DataRow dr1 in dt1.Rows)
{
Response.Write("<option value=\"" + dr1["id"].ToString() + "\">-" + dr1["name"].ToString() + "</option>\n");
//第三层开始
DataTable dt2 = ad.SelectCategory(dr1["id"].ToString());
if (dt2.Rows.Count > 0)
{
foreach (DataRow dr2 in dt2.Rows)
{
Response.Write("<option value=\"" + dr2["id"].ToString() + "\">--" + dr2["name"].ToString() + "</option>\n");
}
}
//第三层结束
}
}
//第二层结束
}
//第一层结束
}
else
{
Response.Write("<option value=\"0\">一级分类</option>\n");
}
Response.Write("</select><br/>");
这样根本无法实现无限分类,我是新手,请求高手指导,谢谢
------解决方案--------------------void buildTree(string parentId)
{
DataTable dt = ad.SelectCategory(string parentId);
if (dt.Rows.Count > 1)
{
Response.Write("<select name=\"category\" value=\"0\">\n");
//第N层开始
foreach (DataRow dr in dt.Rows)
{
Response.Write("<option value=\"" + dr["id"].ToString() + "\">" + dr["name"].ToString() + "</option>\n");
buildTree(dr["id"].ToString() )
}
Response.Write("</select><br/>");
}
}
这样试试?
------解决方案--------------------
private void main(DataTable dt){
foreach (DataRow dr in dt.Rows)
{
Response.Write("<option value=\"" + dr["id"].ToString() + "\">" + dr["name"].ToString() + "</option>\n");
main(ad.SelectCategory(dr["id"].ToString()));
}
}
private void page(){
Response.Write("<select name=\"category\" value=\"0\">\n");
main(dt);
Response.Write("</select><br/>");
}