2016-07-19 103 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 
完成