Rendering eine ungeordnete Liste mit asp.net
Brauche ich zum Rendern eine ungeordnete Liste mit den Daten aus der Datenbank verwenden asp.net/C#.My Daten wie folgt aussieht.
id Name Depth
1 ELECTRONICS 0
2 TELEVISIONS 1
3 Tube 2
4 LCD 2
5 Plasma 2
6 Portable electronics 1
7 MP3 Player 2
8 Flash 3
9 CD Players 2
10 2 Way Radio 2
mithilfe der oben genannten Beispiel-Daten brauche ich zum Rendern eine ungeordnete Liste basiert auf der Tiefe, im folgenden format
<ul>
<li>ELECTRONICS
<ul>
<li>TELEVISIONS
<ul>
<li>TUBE</li>
<li>LCD</li>
<li>PLASMA</li>
</ul>
</li>
<li>PORTABLE ELECTRONICS
<ul>
<li>MP3 PLAYERS
<ul>
<li>FLASH</li>
</ul>
</li>
<li>CD PLAYERS</li>
<li>2 WAY RADIOS</li>
</ul>
</li>
</ul>
</li>
</ul>
Oben genannten Daten ist nur ein Beispiel,ich habe eine riesige recordset, die umgewandelt werden ungeordnete Liste.Könnte jemand bitte geben Sie mir eine Idee, wie dies zu erreichen?
UPDATE:
Ich habe aktualisiert mein code erzeugt ungeordnete Liste folgt .
int lastDepth = -1;
int numUL = 0;
StringBuilder output = new StringBuilder();
foreach (DataRow row in ds.Tables[0].Rows)
{
int currentDepth = Convert.ToInt32(row["Depth"]);
if (lastDepth < currentDepth)
{
if (currentDepth == 0)
{
output.Append("<ul class=\"simpleTree\">");
output.AppendFormat("<li class=\"root\"><span><a href=\"#\" title=\"root\">root</a></span><ul><li class=\"open\" ><span><a href=\"#\" title={1}>{0}</a></span>", row["name"],row["id"]);
}
else
{
output.Append("<ul>");
if(currentDepth==1)
output.AppendFormat("<li><span>{0}</span>", row["name"]);
else
output.AppendFormat("<li><span class=\"text\"><a href=\"#\" title={1}>{0}</a></span>", row["name"], row["id"]);
}
numUL++;
}
else if (lastDepth > currentDepth)
{
output.Append("</li></ul></li>");
if(currentDepth==1)
output.AppendFormat("<li><span>{0}</span>", row["name"]);
else
output.AppendFormat("<li><span class=\"text\"><a href=\"#\" title={1}>{0}</a></span>", row["name"], row["id"]);
numUL--;
}
else if (lastDepth > -1)
{
output.Append("</li>");
output.AppendFormat("<li><span class=\"text\"><a href=\"#\" title={1}>{0}</a></span>", row["name"],row["id"]);
}
lastDepth = currentDepth;
}
for (int i = 1; i <= numUL+1; i++)
{
output.Append("</li></ul>");
}
Mit dem obigen code auf meine ungeordnete Liste sieht wie folgt aus.
<ul class="simpleTree">
<li class="root">
<span><a href="#" title="root">root</a></span>
<ul>
<li class="open" >
<span><a href="#" title=1>ELECTRONICS</a></span>
<ul>
<li>
<span>TELEVISIONS</span>
<ul>
<li>
<span class="text"><a href="#" title=3>TUBE</a></span>
</li>
<li>
<span class="text"><a href="#" title=4>LCD</a></span>
</li>
<li><span class="text"><a href="#" title=5>PLASMA</a></span>
</li>
</ul>
</li>
<li>
<span>PORTABLE ELECTRONICS</span>
<ul>
<li>
<span class="text"><a href="#" title=7>MP3 PLAYERS</a></span>
<ul>
<li>
<span class="text"><a href="#" title=8>FLASH</a></span>
</li>
</ul>
</li>
<li>
<span class="text"><a href="#" title=9>CD PLAYERS</a></span>
</li>
<li>
<span class="text"><a href="#" title=10>2 WAY RADIOS</a></span>
</li>
</ul>
</li></ul>
</li></ul>
</li></ul>
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie etwas tun, wie dies im code und dann das Ergebnis auf ein Literal-Steuerelement auf der Seite:
Update: ich es so gemacht, dass es in eine css-Klasse auf die Elemente der Liste bezogen auf die Tiefe, wie gewünscht, in die Kommentare.
Verwenden Sie das Repeater-Steuerelement.
Proben:
MSDN-Dokumentation
Edit: nicht bemerkt, das Teil über Tiefe, verwenden Sie die Treeview-Steuerelement betrachten Sie stattdessen, das Teil über die Bindung an eine Datenbank.
Es sei denn, Sie verwenden .NET 2.0 verwenden Sie das ListView-Steuerelement.
Mit ASP.NET 3.5 die ListView und DataPager-Controls: Anzeigen von Daten mit dem ListView