2016-09-22 12 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

あなたが動的にこのリストを作成するために使用できる2つの方法があります。

あなたはStringBuilderの文字列を作成し、以下のように、あなたのメインのdivにinnerHTMLプロパティとしてこの文字列を割り当てることができます

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); 
  • 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(); 
    
  • あなたは、以下のような構造をHtmlGenericControl使用することができます210
      • d System.Web.UI.HtmlControls as using to HtmlControls

      • StringBuilderを使用するには、System.Textを使用するように追加する必要があります。

      • ボーナス:hereから、「+」の文字列を追加する代わりに、StringBuilder を使用する理由がわかります。