在asp.net中递归绑定无序列表
我有一个数据包,如下所示:在asp.net中递归绑定无序列表,asp.net,c#-4.0,Asp.net,C# 4.0,我有一个数据包,如下所示: id menuname url parentid 1 Home ~/Home.aspx NULL 2 Product ~/products.aspx NULL 3
id menuname url parentid
1 Home ~/Home.aspx NULL
2 Product ~/products.aspx NULL
3 Services ~/services.aspx NULL
4 ERP ~/erp.aspx 2
5 HRM ~/hrm.aspx 4
7 Payroll ~/payroll.aspx 4
8 Programming ~/programming.aspx 3
9 Advertising ~/advert.aspx 3
10 Television Advert ~/tvadvert.aspx 9
11 Radio Advert ~/radioadvert.aspx 9
因此,我想根据上面的数据表将菜单项生成一个无序列表,这样带有nullparentid
的项应该是第一级菜单
其他子菜单将基于其parentid
,如下所示:
<ul class="menu">
<li><a href="home.aspx">Home</a></li>
<li><a href="produc.aspx">Product</a>
<ul>
<li>
<a href="erp.aspx">ERP</a>
<ul>
<li><a href="hrm.aspx">HRM</a></li>
<li><a href="payroll.aspx">Payroll</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="services.aspx">Services</a>
<ul>
<li><a href="programming.aspx">Advertising</a></li>
<li><a href="advert.aspx">Programming</a></li>
</ul>
</li>
.....etc
</ul>
-
-
-
等
问题是我不明白怎么做试试这个
var dtrow = dt.Select("parentid is null or parentid=''");
var str = new StringBuilder();
str.Append("<ul class='menu'>");
if (dtrow.Any())
{
foreach (DataRow row in dtrow)
{
str.AppendFormat("<li><a href='{0}'>{1}</a></li>", row["url"].ToString(), row["menuname"].ToString());
var crow = dt.Select("parentid='" + row["id"] + "'");
if (crow.Any())
{
str.Append("<ul>");
foreach (DataRow drow in crow)
{
var ccrow = dt.Select("parentid='" + drow["id"] + "'");
if (ccrow.Any())
{
str.AppendFormat("<li><a href='{0}'>{1}</a>", drow["url"], drow["menuname"]);
str.Append("<ul>");
foreach (DataRow dcrow in ccrow)
{
str.AppendFormat("<li><a href='{0}'>{1}</a></li>", dcrow["url"], dcrow["menuname"]);
}
str.Append("</ul>");
str.Append("</li>");
}
else
{
str.AppendFormat("<li><a href='{0}'>{1}</a></li>", drow["url"], drow["menuname"]);
}
}
str.Append("</ul>");
}
}
}
else
{
foreach (DataRow row in dt.Rows)
{
str.AppendFormat("<li><a href='{0}'>{1}</a></li>", row["url"], row["menuname"]);
}
}
str.Append("</ul>");
var dtrow=dt.Select(“parentid为null或parentid=”);
var str=新的StringBuilder();
str.Append(“
”);