2016-07-19 100 views
0

我創建網站菜單&子菜單是&從數據庫進行完全動態的有點糊塗了。對於菜單我用列表視圖控件這是很好的,現在所有的菜單都有它是基於菜單的子菜單(菜單子),以及。現在我不明白該怎麼做。我想使用嵌套的ListView會很好,但我需要一個提示如何綁定嵌套的ListView?綁定列表視圖列表視圖裏面的子菜單(菜單子)

這是我的主要列表視圖

<asp:ListView ID="mainMenu" runat="server"> 
    <ItemTemplate> 
      <li><asp:HyperLink ID="mainLinks" runat="server" NavigateUrl='<%# Eval("name", "~/{0}") %>' Text='<%# Eval("name") %>'></asp:HyperLink> 
       <ul class="super-child"> 
         <asp:ListView ID="childMenu" runat="server"> 
          <ItemTemplate> 
           <li><asp:HyperLink ID="cat3" runat="server" NavigateUrl='<%# Eval("category") & Eval("name", "/{0}") %>' Text='<%# Eval("name") %>'></asp:HyperLink></li> 
          </ItemTemplate> 
         </asp:ListView> 
       </ul> 
      </li> 
     </ItemTemplate> 
</asp:ListView> 


Private Sub bigMenu() 
     Dim constr As String = ConfigurationManager.ConnectionStrings("conio").ConnectionString 
     Using con As New MySqlConnection(constr) 
      Using cmd As New MySqlCommand() 
       cmd.CommandText = "SELECT * FROM mainMenu WHERE status = 'active' order by CAST(position as SIGNED INTEGER) asc" 
       cmd.Connection = con 
       Using sda As New MySqlDataAdapter(cmd) 
        Dim dt As New DataTable() 
        sda.Fill(dt) 
        mainMenu.DataSource = dt 
        mainMenu.DataBind() 
       End Using 
      End Using 
     End Using 
    End Sub 

回答

1

您需要使用的ListView的ItemDataBound綁定你的嵌套的ListView。 ItemDatBound將爲您獲取行值。請參見下面的代碼我爲你

<asp:ListView ID="mainMenu" runat="server" DataKeyNames="enter column name you want"> 
    <ItemTemplate> 
      <li><asp:HyperLink ID="mainLinks" runat="server" NavigateUrl='<%# Eval("name", "~/{0}") %>' Text='<%# Eval("name") %>'></asp:HyperLink> 
       <ul class="super-child"> 
         <asp:ListView ID="childMenu" runat="server"> 
          <ItemTemplate> 
           <li><asp:HyperLink ID="cat3" runat="server" NavigateUrl='<%# Eval("category") & Eval("name", "/{0}") %>' Text='<%# Eval("name") %>'></asp:HyperLink></li> 
          </ItemTemplate> 
         </asp:ListView> 
       </ul> 
      </li> 
     </ItemTemplate> 
</asp:ListView> 

Protected Sub onItemDataBound(sender As Object, e As ListViewItemEventArgs) 
     If e.Item.ItemType = ListViewItemType.DataItem Then 
      Dim itm As ListViewDataItem = CType(e.Item, ListViewDataItem) 
      Dim name As String = mainMenu.DataKeys(itm.DataItemIndex)("enter your datakeyname") 
      Dim childMenu As ListView = TryCast(e.Item.FindControl("childMenu"), ListView) 
      Dim constr As String = ConfigurationManager.ConnectionStrings("conio").ConnectionString 
      Using con As New MySqlConnection(constr) 
       Using cmd As New MySqlCommand() 
        cmd.CommandText = "SELECT * FROM tablename WHERE column = '" + name + "'" 
        cmd.Connection = con 
        Using sda As New MySqlDataAdapter(cmd) 
         Dim dt As New DataTable() 
         sda.Fill(dt) 
         childMenu.DataSource = dt 
         childMenu.DataBind() 
        End Using 
       End Using 
      End Using 
     End If 
    End Sub 
完成