2012-03-17 32 views
1

我有一個關於在我的ASP.NET應用程序中構建後端代碼(c#)上的HTML標籤的問題。ASP.NET - 動態構建HTML標籤

讓說,我有如下數據表:

enter image description here

我想動態轉換(使用多個的foreach,如果其他條件)的數據表爲UL和下面的Li形式:

enter image description here

最後我的預期輸出:

enter image description here

實現此目標的最佳做法是什麼? 請幫忙。

謝謝你在先進。

更新時間: 我發現這個職位How do I display non-normalized data in a hierarchical structure?

+0

這取決於所是如何生成的表...它是如何產生,或者是什麼在數據庫中的數據的模樣? – 2012-03-17 19:45:26

+0

表不固定,上面的表格是如何存儲數據 – sams5817 2012-03-18 02:58:06

回答

3

你另一種替代解決方案主要有包含其他人(孩子和孫子女)人(母公司)的層次結構,所以你可以使用遞歸函數遍歷Person對象的子項。事情是這樣的:

public class Person 
{ 
    public IEnumerable<Person> Children { get; set; } 
    public string Name { get; set; } 
    public string Link { get; set; } 
} 

public class PeopleHtmlGenerator 
{ 
    public string GetPeopleHtml(IEnumerable<Person> people) 
    { 
     return string.Format("<div>{0}</div>", GetChildren(people)); 
    } 

    private string GetChildren(IEnumerable<Person> people) 
    { 
     StringBuilder result = new StringBuilder(); 
     result.AppendLine("<ul>"); 
     foreach (var person in people) 
     { 
      result.AppendLine(string.Format("<li><a href=\"{0}\">{1}</a></li>", person.Link, person.Name)); 
      result.AppendLine(GetChildren(person.Children)); 
     } 
     result.AppendLine("</ul>"); 
     return result.ToString(); 
    } 
} 
+1

這是一個非常優雅的解決方案。 – 2012-03-19 04:25:23

+0

@TravisJ感謝:) – Robbie 2012-03-19 10:11:55