asp.net/C#을 사용하여 데이터베이스에서 얻은 데이터로 정렬되지 않은 목록을 렌더링해야합니다. 내 데이터는 이와 유사합니다.asp.net을 사용하여 정렬되지 않은 목록 렌더링
<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>
데이터 위 다음과 같은 형식으로, 내가 깊이에 따라 정렬되지 않은 목록을 렌더링 할 필요가 위의 샘플 데이터를 사용하여
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
내가에있는 거대한 레코드가 단지 샘플입니다 정렬되지 않은 목록으로 변환 될 수 있습니다. 누군가 이걸 어떻게 달성 할 수있는 아이디어를 주시겠습니까?
업데이트 : 다음과 같이 순서가 지정되지 않은 목록을 생성하는 코드를 업데이트했습니다. 내 순서가없는 목록은 다음과 같습니다 위의 코드와
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>");
}
.
<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>
감사합니다.
정말 DV를 원하지만 그것은 기술적으로 올바른 진술이지만 절대적으로 권장하지는 않습니다. 거기에 컨트롤이 의미, 오히려 바인딩 전에 ForEach 루프 aspx 페이지에서이. –
Chris, 왜 위의 방법을 권장하지 않습니까? – kranthi
당신이 (심지어 자신의 목록에 깊이 유연한 양을 고려, 별도의 코드를 많이하지 않고이 인스턴스에서 작동합니다 확실하지 않다) 중첩의 ListView의 무리에 비해 그렇게 나쁜 생각하는 이유를 듣고 싶어요. 그리고이 foreach 루프를 코드 뒤에 또는 ASPX 페이지 자체에 넣든간에 페이지 출력을 버퍼링하지 않으면 실제로 아무런 차이가 없습니다. – patmortech