我试图根据从数据库收到的数据创建动态UI Li
基本上我从DB收到的列如下 1.CategoryID 2.ParentCategoryID 3.Href 4.Name。
现在我使用以下循环来创建我的UL。
while (rdr.Read())
{
if (rdr["ParentCategoryID"].ToString() == "")
{
System.Web.UI.HtmlControls.HtmlGenericControl newLI =
new System.Web.UI.HtmlControls.HtmlGenericControl("li");
newLI.Attributes.Add("class", "Item-"+(i+1));
newLI.ID = "id" + i;
newLI.InnerHtml = "<a href=" + '"' +
rdr["Href"].ToString() + "/default.aspx" +
'"' +'>' +
"<span>" + rdr["Name"]+"</span>" + "</a>";
newUL.Controls.Add(newLI);
i++;
}
}
在这种情况下,我只创建UL的顶级...但这是一个多级UL
假设我的内容如下
CategoryID ParentCategoryID Href Name
1 NULL /a-d A-C
2 1 /a A
3 1 /b B
4 1 /c C
5 NULL /d-e D-E
6 5 /d D
7 5 /e E
8 NULL /f-g F-G
9 8 /f F
10 8 /g G
目前我的代码一直有效,直到我得到
我如何改进这一点,以便在子类别下列出子类别?
答案 0 :(得分:1)
如果您按ParentCategoryID
订购商品,则可以执行第二遍以添加具有非NULL父类别的所有元素。
只需将新项添加到父项的Controls
属性中即可。
通常我使用Dictionary<Key, Value>
来跟踪现有元素,并能够通过ID快速访问它们。
最后,如果您首先按ParentCategoryID
按NULL
订购整个数据,然后按CategoryID
订购,则应该只能在一个while
循环中进行。