2016-09-22 59 views
0

我在c#中創建基於數組的HTML列表時遇到問題。 我試過使用split.string,foreach等。但仍不能想出邏輯... :(..
任何人都可以幫助我解決我的問題
這裏是我的陣列混淆基於陣列創建HTML列表

 List<string> listMenu = new List<string>(); 
     listMenu.Add("Dashboard~View1"); 
     listMenu.Add("Dashboard~View2"); 
     listMenu.Add("Customer"); 
     listMenu.Add("Part"); 
     listMenu.Add("Part~Part1~Part11"); 
     listMenu.Add("Part~Part1~Part12"); 
     listMenu.Add("Part~Part2~Part21"); 
     listMenu.Add("Part~Part2~Part22"); 
     listMenu.Add("Part~Part3~Part31~Part311"); 
     listMenu.Add("Part~Part3~Part31~Part312"); 
     listMenu.Add("Branch"); 

我想創建HTML表這樣?

<div id=menu> 
 
    <ul> 
 
    <li>Dahboard 
 
     <ul> 
 
      <li> View1 </li> 
 
      <li> View2 </li> 
 
     </ul> 
 
    </li> 
 
    <li> Customer 
 
    </li> 
 
    <li> Part 
 
     <ul> 
 
      <li> Part1 
 
       <ul> 
 
        <li> Part11 
 
        </li> 
 
        <li> Part12 
 
        </li> 
 
       </ul> 
 
       </li> 
 
      <li> Part2 
 
       <ul> 
 
        <li> Part21 
 
        </li> 
 
        <li> Part22 
 
        </li> 
 
       </ul> 
 
      </li> 
 
      <li> Part3 
 
       <ul> 
 
        <li> Part31 
 
         <ul> 
 
          <li> Part 311 
 
          </li> 
 
         </ul> 
 
        </li> 
 
        <li> Part 312 
 
        </li> 
 
       </ul> 
 
      </li> 
 
     </ul> 
 
    </li> 
 
    <li> Branch 
 
    </li> 
 
    </ul> 
 
</div>

+0

您正在試圖代表使用平面列表的數據結構,這是不理想的一個層級菜單結構。如果你可以控制listMenu數據結構,那麼考慮使用某種類型的樹/鏈表數據結構。這將使它更容易顯示爲分層HTML菜單。 – Polyfun

回答

0

有可用於動態創建這個列表兩種方式:

  1. 您可以按以下使用HtmlGenericControl結構:

    HtmlGenericControl c = new HtmlGenericControl("div"); 
        c.Attributes.Add("id", "menu"); 
        HtmlGenericControl ul1 = new HtmlGenericControl("ul"); 
        c.Controls.Add(ul1); 
        HtmlGenericControl li1 = new HtmlGenericControl("li"); 
        li1.InnerText = "Dashboard"; 
        ul1.Controls.Add(li1); 
    
        mainDiv.Controls.Add(c); 
    
  2. 您可以創建StringBuilder的一個字符串,這個字符串作爲innerHTML的分配給你的主要DIV,如下:

    StringBuilder s = new StringBuilder(); 
        s.Append(@"<div id=menu> 
           <ul> 
           <li>Dahboard 
            <ul> 
             <li> View1 </li> 
             <li> View2 </li> 
            </ul> 
           </li> 
           </ul> 
          </div> "); //you can alter this string dynamically 
        mainDiv.InnerHtml = s.ToString(); 
    
  • 您應該廣告d System.Web.UI.HtmlControls用作使用 HtmlControls

  • 您應該添加System.Text作爲使用以便使用StringBuilder。

  • 紅利:你可以從here找到爲什麼你應該使用StringBuilder 而不是用'+'加字符串。