一般了解如何在菜单中突出显示选定的父项(使用 ListView)



所以我有一个包含菜单信息的分层数据源...我将其数据绑定到列表视图,并使用CSS将其格式化为菜单。一切都很好..现在下一步我似乎无法理解..

如何突出显示(设置)

  • 刚刚选择的菜单项的类。.它们只是链接.我是否应该以某种方式识别所单击内容的 ID,然后使用它以某种方式循环..?

    这是我到目前为止得到的,所以任何正确方向的提示都是好的。

     <asp:ListView ID="lvMainOuter" runat="server">
                            <LayoutTemplate>
                                <ul id="menunav" runat="server">
                                    <asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
                                </ul>
                            </LayoutTemplate>
                            <ItemTemplate>
                                <li <%# (Container.DataItem as FigLeafMenuItem).ItemSelected == "true" ? @" class=""MainMenuSelected""" : @" class=""""" %>>
                                    <asp:HyperLink ID="nodeLink" runat="server" Text='<%# (Container.DataItem as FigLeafMenuItem).Name %>' NavigateUrl='<%# (Container.DataItem as FigLeafMenuItem).Url %>' />
                                    <asp:ListView ID="lvMainInner" DataSource="<%# (Container.DataItem as FigLeafMenuItem).Children %>" runat="server">
                                        <LayoutTemplate>
                                            <ul id="menunav" runat="server">
                                                <asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
                                            </ul>
                                        </LayoutTemplate>
                                        <ItemTemplate>
                                            <li>
                                                <asp:HyperLink ID="nodeLink" runat="server" Text='<%# (Container.DataItem as FigLeafMenuItem).Name %>' NavigateUrl='<%# (Container.DataItem as FigLeafMenuItem).Url %>' />
                                            </li>
                                        </ItemTemplate>
                                    </asp:ListView>
                                </li>
                            </ItemTemplate>
                        </asp:ListView>
       public int SelectedMenuId { get; set; }
    protected void Page_Load(object sender, EventArgs e)
    {
        lvMainOuter.ItemDataBound += lvMainOuter_ItemDataBound;
        lvMainOuter.DataSource = new FigLeafMenu().GetFigLeafTopMenu();
        lvMainOuter.DataBind();
    }
    void lvMainOuter_ItemDataBound(object sender, ListViewItemEventArgs e)
    {
        if (e.Item.ItemType == ListViewItemType.DataItem)
        {
            ListViewDataItem dataItem = (ListViewDataItem)e.Item;
            //WHAT DO I DO NOW TO GET THE SELECTED ITEM AND ASSIGN IT A CLASS? 
        }
    }
    
  • 试试这个

            <asp:ListView ID="lvMainInner" DataSource="<%# (Container.DataItem as FigLeafMenuItem).Children %>"
            runat="server">
            <LayoutTemplate>
                <ul id="menunav" runat="server">
                    <asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
                </ul>
            </LayoutTemplate>
            <ItemTemplate>
                <li>
                    <asp:HyperLink ID="nodeLink" runat="server" Text='<%# (Container.DataItem as FigLeafMenuItem).Name %>'
                        NavigateUrl='<%# (Container.DataItem as FigLeafMenuItem).Url %>' />
                </li>
            </ItemTemplate>
            <SelectedItemTemplate>
                <li>
                    <asp:HyperLink ID="nodeLink" CssClass="MyHighlightClass" runat="server" Text='<%# (Container.DataItem as FigLeafMenuItem).Name %>'
                        NavigateUrl='<%# (Container.DataItem as FigLeafMenuItem).Url %>' />
                </li>
            </SelectedItemTemplate>
        </asp:ListView>
    

    或者您可以使用代码隐藏...

       lvMainInner.SelectedIndexChanged += (o, args) =>
                {
                  //You can do whatever here
                };
    

    在您的超链接标记中,您可以将 CssClass 设置为基于某些语句的条件语句,对吗?

    最新更新