C# 创建动态ulli
我试图根据从数据库接收到的数据创建一个动态ulli 基本上,我从DB收到的列如下 1.分类 2.ParentCategoryID 3.Href 4.姓名 现在我使用下面的循环来创建ULC# 创建动态ulli,c#,dynamic,html-lists,stringbuilder,C#,Dynamic,Html Lists,Stringbuilder,我试图根据从数据库接收到的数据创建一个动态ulli 基本上,我从DB收到的列如下 1.分类 2.ParentCategoryID 3.Href 4.姓名 现在我使用下面的循环来创建UL while (rdr.Read()) { if (rdr["ParentCategoryID"].ToString() == "") { System.Web.UI.HtmlControls.HtmlGenericControl newLI = new S
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++;
}
}
while(rdr.Read())
{
如果(rdr[“ParentCategoryID”].ToString()=“”)
{
System.Web.UI.HtmlControls.HtmlGenericControl newLI=
新系统.Web.UI.HtmlControls.HtmlGenericControl(“li”);
Add(“类”,“项-”+(i+1));
newLI.ID=“ID”+i;
newLI.InnerHtml=“”;
newUL.Controls.Add(newLI);
i++;
}
}
在这种情况下,我只创建UL的顶级。。。但这是一个多层次的问题
假设我的inout如下
CategoryID ParentCategoryID Href Name
1空/a-d a-C
2 1/a a
3 1/b
4 1/c c
5空/d-e d-e
65/d
75/e
8空/f-g f-g
9 8/f
10 8/g g
目前我的代码一直工作到
- A-C
- D-E
- F-G
如何改进这一点,以便将子类别列在父类别下?如果您按ParentCategoryID
排序项目,则可以执行第二次操作,以添加具有非空父类别的所有元素
只需将新项添加到父控件的属性中即可
通常我使用字典
来跟踪现有元素,并能够通过ID快速访问它们
最后,如果您先按ParentCategoryID
和NULL
对整个数据进行排序,然后再按CategoryID
,那么您应该能够在循环过程中只在一次中完成排序。如何进行第二次遍历?将从读取器读取的数据存储在一个列表中,然后再次遍历该列表。如果你读了我的最后一句话,你应该可以在一个循环中完成。是的。我正在这样做。谢谢最后我的代码开始工作了