Я сейчас использую http://blogs.sitepoint.com/hierarchical-data-database-2/ метод хранения моих данных.
Мои текущие строки базы данных выглядят так:
Имя | 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>
Все узлы WITH children должны выводить все свои дочерние элементы в какой-то цикл:
<li><ul><li></li></ul><li>
У меня есть вопросы:
1. Как правильно перебрать данные этого типа для правильного вывода?
2. Как мне успешно вывести его в ретранслятор? [ОТВЕТ]
Я знаю, что у меня не получится, но мой мозг начал думать об этом. Любая помощь будет принята с благодарностью.
Если вам требуется что-то еще, дайте мне знать, но это должно быть так.
Давай, ребята, мне нужна помощь с условными или математическими данными, чтобы получить то, что я хочу, в правильном порядке.