2014-11-06 45 views
9

我創造我的網站上一個子問題asp.net頁面CMS子不工作

我有2個MSSQL數據庫表:

WWW

  • WWW_ID
  • CAT_ID - > FK分類
  • WWW_NAME

分類

  • CAT_ID
  • CAT_NAME
  • CAT_SORTORDER

我的foreach

sb.Append("<ul class=\"Menu\">"); 
    foreach (WWW item in WWW.Fetch(null, null, null)) 
    { 
     if (item.Active) 
     { 
      //All pages that doesnt have a categorie 
      if (!item.Categorie.ID.HasValue) 
      { 
       sb.AppendFormat("<li><a href=\"page?id={1}\">{0}</a></li>", item.Name, item.ID.ToString()); 
      } 
      //All pages that have a categorie 
      if (item.Categorie.ID.HasValue) 
      { 
       //Split different categories. 
       if (CAT != item.Categorie.Name) 
       { 
        CAT = item.Categorie.Name; 
        sb.AppendFormat("<li><a href=\"page?id={1}\">{0}</a></li>", item.Categorie.Name, item.ID.ToString()); 
       } 
      } 
     } 
     CAT = ""; 
    } 
    sb.Append("</ul>"); 

我失去了我在哪裏需要創建開始UL並關閉UL 以及何時需要重置我的String CAT。 謝謝

+0

啊@空白我恨空白! – JonH 2014-11-06 17:35:02

+2

發佈爲此代碼呈現的HTML – 2015-05-21 09:27:18

+0

您的意思是您想要在一個節點內創建子菜單,如果它包含任何類別? – 2015-05-21 10:16:11

回答

0

我不確定你的菜單結構是什麼,因爲你沒有一個很好的例子。然而,如果你正在做的事情,如:

<ul> 
    <li>Category</li> 
    <li>Catefory 
     <ul> 
      <li>Page</li> 
     </ul> 
    </li> 
<\ul> 

,那麼你就需要做一些事情,如:

sb.Append("<ul class=\"Menu\">"); 
foreach (Categories category in Categories.Fetch(null, null, null)) 
{ 
    if (category.Active) 
    { 
     sb.AppendFormat("<li><a href=\"page?id={1}\">{0}</a>", category.Name, category.ID.ToString()); 
     var pages = WWW.Fetch(p => p.Categorie.ID.Equals(category.ID)); 
     if(pages.Any()) { 
      sb.Append("<ul>"); 
      foreach(WWW page in pages) { 
       sb.AppendFormat("<li><a href=\"page?id={1}\">{0}</a></li>", page.Name, page.ID.ToString()); 
      } 
      sb.Append("</ul>"); 
     } 
     sb.Append("</li>"); 
    } 
} 
sb.Append("</ul>"); 

我意識到這是不準確您的需求最有可能的,但應該是一個相當不錯的菜單背後邏輯的例子。如果您可以在類別和WWW表格表示數據的背後填寫一些更詳細的信息,並且也是您的預期輸出的示例,我相信我可以附加一個更具體的示例。

+0

如果我的類別是空的比我沒有任何WWW頁面,所以這不是你想要什麼? – 2015-06-01 13:41:51

+0

上面的用法只是一個如何做嵌套菜單的例子。 (內部循環的概念來遍歷菜單項的「子元素」)。我不確定你的表結構應該代表什麼,所以我只是對示例進行了刺探。如果你可以展示菜單的樣子(在html中)以及解釋表格如何與html輸出相關的例子,我可以做一個處理代碼的例子來展示它如何在你的情況下特別工作。 – rasicoc 2015-06-02 20:24:47

0

只是做一個函數,並把上面的代碼在功能和遞歸調用它,當項目包含類別值是這樣的:

public void NestedMenuCalling(List<Categorie> WWW) 
    { 
     sb.Append("<ul class=\"Menu\">"); 
     foreach (WWW item in WWW.Fetch(null, null, null)) 
     { 
      if (item.Active) 
      { 
       //All pages that doesnt have a categorie 
       if (!item.Categorie.ID.HasValue) 
       { 
        sb.AppendFormat("<li><a href=\"page?id={1}\">{0}</a></li>", item.Name, item.ID.ToString()); 
       } 
       //All pages that have a categorie 
       if (item.Categorie.ID.HasValue) 
       { 
        //Split different categories. 
        if (CAT != item.Categorie.Name) 
        { 
         CAT = item.Categorie.Name; 
         NestedMenuCalling(item.Categorie); 
        } 
       } 
      } 
      CAT = ""; 
     } 
     sb.Append("</ul>"); 
    }