如何阻止asp列表视图中的动态侧边栏崩溃?

How do i stop a dynamic sidebar inside an asp listview from collapsing?

本文关键字:动态 侧边栏 崩溃 何阻止 asp 列表 视图      更新时间:2023-09-26

动画工作,顺便说一句,每当我点击一个菜单,子菜单将自动下拉。现在的问题是,每次我点击子菜单上的一个项目,它崩溃,因为它过滤数据表。

下面是我的代码:

  <div id="contentWrapper">
                    <ul id="leftNavigation">
                        <li><a href="#"><i class="leftNavIcon"></i>Hardware</a>
                            <asp:ListView ID="lvHardware" runat="server">
                                <LayoutTemplate>
                                    <ul>
                                        <asp:PlaceHolder ID="itemPlaceholder" runat="server" />
                                    </ul>
                                </LayoutTemplate>
                                <ItemTemplate>
                                    <ul>
                                        <li>
                                            <asp:LinkButton ID="lbSidebar" runat="server" CssClass="submenuLink" OnClick="lbSidebar_Click" CommandArgument='<%#Eval("TableKey")+";"+Eval("TableValue")%>'><i class="glyphicon glyphicon-menu-right leftNavIcon"></i><%#Eval("TableValue")%></asp:LinkButton>
                                       </li>
                                    </ul>
                                </ItemTemplate>
                            </asp:ListView>
                        </li>
                     </ul>
       </div>

repeaterAssets是我的Table的另一个中继器。我使用动态链接按钮来过滤表的内容

后台代码:

    protected void lbSidebar_Click(object sender, EventArgs e)
    {
        Business.Assets asset = new Business.Assets();
        LinkButton btn = (LinkButton)(sender);
        string[] arg = new string[2];
        arg = btn.CommandArgument.ToString().Split(';');
        int yourValue = System.Convert.ToInt32(arg[0]);
        string breacrumbValue= arg[1];
        phBreadcrumb.Controls.Add(new Literal() { Text = "<li>"+breacrumbValue+"</li>"});
        repeaterAssets.DataSource = asset.FilterGridview(yourValue);
        repeaterAssets.DataBind();
    }

,下面是DOM浏览器显示的内容:

<ul>
<li>
<a class="submenuLink" id="MainContent_lvHardware_lbSidebar_0" href="javascript:__doPostBack('ctl00$MainContent$lvHardware$ctrl0$lbSidebar','')"><i class="glyphicon glyphicon-menu-right leftNavIcon"></i>Desktop CPU</a>
</li>
</ul>

在摆弄代码后,我终于修复了它。代码不是最漂亮的,但它对我来说很有用。

                <ul id="leftNavigation">
                    <li id="liHardware" runat="server"><a href="#"><i class="leftNavIcon"></i>Hardware</a>
                        <asp:ListView ID="lvHardware" runat="server">
                            <LayoutTemplate>
                                <ul>
                                    <asp:PlaceHolder ID="itemPlaceholder" runat="server" />
                                </ul>
                            </LayoutTemplate>
                            <ItemTemplate>
                                <ul>
                                    <li>
                                        <asp:LinkButton ID="lbSidebar" runat="server" CssClass="submenuLink" OnClick="lbSidebar_Click" CommandArgument='<%#Eval("TableKey")+";"+Eval("TableValue")%>'><i class="glyphicon glyphicon-menu-right leftNavIcon"></i><%#Eval("TableValue")%></asp:LinkButton>
                                   </li>
                                </ul>
                            </ItemTemplate>
                        </asp:ListView>
                    </li>
                 </ul>
   </div>

背后的代码:

protected void lbSidebar_Click(object sender, EventArgs e)
{
    Business.Assets asset = new Business.Assets();
    LinkButton btn = (LinkButton)(sender);
    string[] arg = new string[2];
    arg = btn.CommandArgument.ToString().Split(';');
    int yourValue = System.Convert.ToInt32(arg[0]);
    string breacrumbValue= arg[1];
    phBreadcrumb.Controls.Add(new Literal() { Text = "<li>"+breacrumbValue+"</li>"});
    repeaterAssets.DataSource = asset.FilterGridview(yourValue);
    repeaterAssets.DataBind();
    liHardware.Attributes.Add("class","active");
}

我刚刚添加了一个类,当链接按钮被点击时,它会显示:阻塞li包装器。

.active{display:block;}