2013-06-22 96 views
0

我使用的是一個JavaScript菜單dynamicdrivejavascript菜單項數據庫驅動

我試圖從數據庫中獲取菜單項。 我的aspx文件包含菜單,當它是靜態菜單時它工作正常。 我的表或我的查詢實際上產生:

IdPage int, PageTitle varchar(20), PageFileUrl varchar(30), ParentIdPage int 

我的方法來獲得數據

DataRow[] dataRowParent = _dataTable.Select("[ParentIdPage]=" + 0); 
    foreach (DataRow dr in dataRowParent) 
    { 
     HtmlGenericControl li = new HtmlGenericControl("li"); 
     // add <a> 
     HtmlGenericControl hlink = new HtmlGenericControl("a"); 

     if (dr["PageFileUrl"].ToString() == "") // this item has a submenu. 
     { 
      li.Attributes.Add("rel", "ddsubmenu" + dr["IdPage"].ToString()); 

      hlink.Attributes.Add("href", "#");// link should be # when no direct link 
      hlink.InnerText = dr["PageTitle"].ToString(); 
      li.Controls.Add(hlink); 

      ulTopMenu.Controls.Add(li); 

      AddNewUl((int)dr["IdPage"]); 
      AddSubmenuItems(_dataTable, (int)dr["IdPage"]); 
     } 
     else // Direct link ,no submenu 
     { 
      hlink.Attributes.Add("href", dr["PageFileUrl"].ToString()); 
      hlink.InnerText = dr["PageTitle"].ToString(); 
      li.Controls.Add(hlink); 

      ulTopMenu.Controls.Add(li); 
     } 
    } 
} 
private void AddSubmenuItems(DataTable dataTable, int menuId) 
{ 
    // create related sub menu 
    DataView dataView = new DataView(dataTable); 
    dataView.RowFilter = "ParentIdPage=" + menuId; 

    foreach (DataRowView subMenuItem in dataView) 
    { 
      // find related <ul> 
     HtmlControl ulControl = (HtmlControl)FindControl("ddsubmenu" + menuId); 
     // Add new <li><a href="PageFileUrl.aspx" >page title</a> </li> 
     HtmlGenericControl li = new HtmlGenericControl("li"); 

     HtmlGenericControl hlink = new HtmlGenericControl("a"); 
     hlink.Attributes.Add("href", subMenuItem["PageFileUrl"].ToString()); 
     hlink.InnerText = subMenuItem["PageTitle"].ToString(); 

     li.Controls.Add(hlink); 
     li.InnerText = subMenuItem["PageTitle"].ToString(); 
     li.Attributes.Add("href", subMenuItem["PageFileUrl"].ToString()); 

     ulControl.Controls.Add(li); 
    } 
} 

private void AddNewUl(int menuId) 
    { 
    // Add new <ul id="ddsubmenu00" class= "ddsubmenustyle"> 
    HtmlGenericControl newUl = new HtmlGenericControl("ul"); 
    // Set the attributes of the new ul. 
    newUl.ID = "ddsubmenu" + menuId; 
    newUl.Attributes.Add("class", "ddsubmenustyle"); 
    placeHolder1.Controls.Add(newUl); 
    } 

我的問題是,子菜單不會出現!什麼是錯的? 任何幫助表示讚賞。

+0

什麼HTML輸出它是否產生...?運行該項目並在瀏覽器中檢查它生成的HTML輸出。 – Bhavik

+0

html輸出顯示所需的結果。但沒有子項目顯示的父菜單項。 – Salahaldin

+1

我無法解決...... [這是一個很好的教程,可以幫助你創建動態菜單](http://cybarlab.blogspot.in/2013/04/generate-dynamic-menu-in-aspnet的.html) – Bhavik

回答

0

感謝所有,我終於想通了:
替換此行

  li.Attributes.Add("rel",""+ "ddsubmenu" + dr["IdPage"].ToString()+""); 

這一個:

 hlink.Attributes.Add("rel",""+ "ddsubmenu" + dr["IdPage"].ToString()+""); 

現在它工作正常:-)