我目前使用這種http://blogs.sitepoint.com/hierarchical-data-database-2/存儲我的數據的方法。ASP.NET中繼器和輸出分層數據
我目前數據庫中的行是這樣的:
名稱| nodeLeft | nodeRight | nodeLevel
首頁| 1 | 6 | 1
ContentA | 2 | 5 | 2
ContentB | 3 | 4 | 2
簡介| 7 | 8 | 1
現在我使用的是ASP.NET直放站輸出使用列表和jsTree數據:
<asp:Repeater ID="rptContentSectionGetAll" runat="server">
<HeaderTemplate>
<div id="contentSectionTree">
<ul>
<li id="contentSectionTreeRoot" rel="root"><a href="#">Root</a>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li id='<%# Eval("ID") %>'>
<a href="#"><%# Eval("name") %></a>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</li>
</ul>
</div>
</FooterTemplate>
</asp:Repeater>
我需要更換什麼是在ItemTemplate
從所有<li>
的和嵌套<ul>
的後面的代碼。
這是我當前的代碼背後:
private DataTable RepeaterDataSource()
{
ContentSectionBAL cBAL = new ContentSectionBAL();
DataTable dTable = new DataTable();
try
{
dTable = cBAL.Load();
int counter = 1;
var htmlList = "";
for (int i = 0; i < dTable.Rows.Count; i++)
{
htmlList = "<li rel='folder' id='" + dTable.Rows[i]["ID"] + "'>";
htmlList += "<a href='#'>" + dTable.Rows[i]["name"] + "</a>";
if (Convert.ToInt32(dTable.Rows[i]["nodeLevel"]) > counter)
{
htmlList = "<ul>";
for (int j = 0; j < dTable.Rows.Count; j++)
{
if (Convert.ToInt32(dTable.Rows[i]["nodeLevel"]) > counter + 1)
{
htmlList += "<li rel='file' id='" + dTable.Rows[j]["ID"] + "'>";
htmlList += "<a href='#'>" + dTable.Rows[j]["name"] + "</a>";
htmlList += "</li>";
}
}
htmlList += "</ul>";
}
htmlList += "</li>";
counter = counter + 1;
}
}
catch (Exception ee)
{
Session["message"] = ee.Message.ToString();
Session["messageType"] = "error";
}
return dTable;
}
後不久,這個功能我做其綁定:
private void BindRepeater()
{
rptContentSectionGetAll.DataSource = RepeaterDataSource();
rptContentSectionGetAll.DataBind();
}
所有常規節點無子女輸出:<li>name</li>
有子女需要的所有節點在某種循環中輸出所有的孩子: <li><ul><li></li></ul><li>
我有的問題: 1.通過這種類型的數據循環以正確輸出的正確方法是什麼? 2.如何成功輸出中繼器? [回答]
我知道我有什麼不會工作,但我的大腦開始油炸思考這一切。任何幫助將不勝感激。
如果你需要其他東西讓我知道,但這應該是它。
來吧夥計我需要條件或數學的幫助,以正確的順序抓住我想要的東西。
這回答了我的兩個問題之一。 – balexander 2011-04-21 22:33:37
另一個問題是什麼?如果你想知道如何獲得數據,我會使用遞歸函數。 – Chad 2011-04-22 20:36:58