【问题标题】:Create LinkButtons with dynamic ID's使用动态 ID 创建 LinkBut​​tons
【发布时间】:2013-08-26 03:52:51
【问题描述】:

我过去曾涉足过 VB 和 ASP 经典,目前正在尝试在 ASP.net 中编写我的第一个站点,并且我正在不断学习......但我今天已经花了所有时间尝试做这个,我没有用通常的谷歌搜索任何地方。

希望在我的代码中很明显,我正在尝试在具有静态 ID 的 LinkBut​​ton 下方动态添加 2 个具有唯一 ID 的 LinkBut​​ton。我希望 2 个唯一 LinkBut​​tons 中的 ID 在其中包含“companyname”数据项值,以便在单击第一个“companylink”时可以取消隐藏它们 - 我还没有编写子“LoadCompany”来取消隐藏两个 LinkBut​​ton但我很有信心我已经知道该怎么做。

<asp:Content ContentPlaceHolderID="leftsidebarcontent" runat="server">

    <li id="leftsidebarhead" class="sidebaritems">/* MENU */</li><br />
    <asp:Datalist id="customers" runat="server" RepeatLayout="Flow">
    <ItemTemplate>
    <li class="leftsidebaritem sidebaritems"><asp:LinkButton id="CompanyLink" runat="server" OnCommand="LoadCompany" Text='<%#Container.DataItem("companyname")%>'></asp:LinkButton></li>
    <li class="leftsidebaritem sidebaritems"><asp:LinkButton id='<%#Container.DataItem("companyname")%> & "Reviews"' runat="server" Text="Reviews"></asp:LinkButton></li>
    <li class="leftsidebaritem sidebaritems"><asp:LinkButton id='LinkButton1' runat="server" Text="Other"></asp:LinkButton></li>
    <br />
    </ItemTemplate>
    </asp:Datalist>

如果有帮助 - 第一个 LinkBut​​ton 是填充页面左侧下方的导航菜单,在每个 LinkBut​​ton 下方我想要另外两个隐藏的链接按钮,直到单击原始链接按钮,此时它们取消隐藏 - 因此创建一种嵌套导航菜单。

【问题讨论】:

    标签: asp.net vb.net


    【解决方案1】:

    您可以在标记中这样做:

    <asp:Content ID="Content1" ContentPlaceHolderID="leftsidebarcontent" runat="server">
        <p id="leftsidebarhead" class="sidebaritems">/* MENU */</p>
        <br />
        <asp:DataList ID="customers" runat="server" RepeatLayout="Flow" OnItemCommand="customers_ItemCommand" >
            <ItemTemplate>
                <li class="leftsidebaritem sidebaritems">
                    <asp:LinkButton ID="CompanyLink" runat="server"  CommandName="LoadCompany" 
                        Text='<%#DataBinder.Eval(Container.DataItem, "companyname")%>'></asp:LinkButton></li>
                <ul id="ulSubItems" runat="server" visible="false">
                    <li class="leftsidebaritem sidebaritems">
                        <asp:LinkButton ID='LinkButton1' runat="server" Text="Reviews"></asp:LinkButton></li>
                    <li class="leftsidebaritem sidebaritems">
                        <asp:LinkButton ID='LinkButton2' runat="server" Text="Other"></asp:LinkButton></li>
                </ul>
                <br />
            </ItemTemplate>
        </asp:DataList>
    </asp:Content>
    

    在代码隐藏中:

     Protected Sub customers_ItemCommand(source As Object, e As DataListCommandEventArgs) Handles customers.ItemCommand
        'Hide all subitems
        For Each itm As DataListItem In customers.Items
            If itm.ItemType = ListItemType.Item OrElse itm.ItemType = ListItemType.AlternatingItem Then
                Dim ulSubItems As HtmlGenericControl = CType(itm.FindControl("ulSubItems"), HtmlGenericControl)
                ulSubItems.Visible = False
            End If
        Next
        If e.CommandName = "LoadCompany" Then
            Dim MySubItems As HtmlGenericControl = CType(e.Item.FindControl("ulSubItems"), HtmlGenericControl)
            If Not MySubItems Is Nothing Then
                MySubItems.Visible = True
            End If
        End If
    End Sub
    

    【讨论】:

    • 感谢您的帮助;看起来是一个不错的解决方案。我实际上找到了解决问题的另一种方法 - 但它相当不优雅(对于数据集的每个循环来生成导航表和子项,使用 findcontrol 隐藏/取消隐藏子项。我将在下周末实现你的;如果只是了解更多。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 2011-03-21
    • 1970-01-01
    • 2010-11-04
    • 2019-07-15
    • 1970-01-01
    • 2019-07-11
    相关资源
    最近更新 更多