如何在asp.net中递归绑定无序列表 [英] How to bind unordered list recursively in asp.net
问题描述
您好专家,我的数据如下:
id     menuname                 url                    
parentid
1      家居NBSP;                       〜/ Home.aspx                  
NULL
2      产品与NBSP;                       〜/ products.aspx               NULL
3      服务及NBSP;                   〜/ services.aspx                 NULL  
4       ERP                            〜/ erp.aspx                  
2
5       HRM                            〜/ hrm.aspx                  
4
7      薪资                        〜/ payroll.aspx               4
8      程序设计及NBSP;                   〜/ programming.aspx           3
9      广告及NBSP;                   〜/ advert.aspx               3
10     电视广告          〜/ tvadvert.aspx               9
11     广播广告              〜/ radioadvert.aspx           9
........
........
$
所以我想根据上面的数据表生成一个无序列表的菜单项,这样那些空的parentid项应该是第一级菜单
,其他菜单项将是基于他们的parentid的子菜单如下:
Hello experts, I have a datatble as below:
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
........
........
So i want to generate menu item into an unordered list based on the datatable above such that the items with null parentid should be the first level menu
and others will be submenus based on their parentid like so:
< ul class =" menu">
< li>< a href =" home.aspx"> Home< / a>< / li>
< li>< a href =" produc.aspx"> Product< / a>
&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; < ul>
&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; < li>
&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; < a href =" erp.aspx"> ERP< / a>
&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; < ul>
&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; < li>< a href =" hrm.aspx"> HRM< / a>< / li>
&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; < li>< a href =" payroll.aspx"> Payroll< / a>< / li>
&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; < / ul>
&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; < / li>
&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; < / ul>
< / li>
< li>< a href =" services.aspx">服务< / a>
&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; < ul>
&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; < li>< a href =" programming.aspx">广告< / a>< / li>
&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; < li>< a href =" advert.aspx">编程< / a>< / li>
&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP; < / ul>
< / li>
.....等
< / ul>
以下是我看似不完整的代码:
<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>
below is my code that seem incomplete:
public static String AddToList()
{
DataTable table = new DataTable();
table = GetMenus();
System.Text.StringBuilder sb = new System.Text.StringBuilder();
foreach (DataRow row in table.Rows())
{
string parentId = row["parentmenuId"].ToString();
//string url = Server.MapPath(m.Url);
if (string.IsNullOrEmpty(parentId))
{
sb.Append(String.Format("<ul class=\"menu\"><li><a href=\"{0}\">{1}</a></li></ul>", row["Url"].ToString(), row["Description"].ToString()));
}
}
return sb.ToString();
}
这将获得所有顶级菜单,但所有其他努力获得子菜单不起作用。请帮我解决。
提前致谢
This gets all top menu but all other effort to get submenu doesnt work. Pls help me out.
Thanks in advance
推荐答案
有关ASP.NET的问题,请使用
ASP.NET论坛 请。
亲切的问候
这篇关于如何在asp.net中递归绑定无序列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!