尝试访问 asp.net 中继器内的按钮


   <div class="row">
        <asp:Repeater ID="rptrProducts" runat="server" OnItemDataBound="rptrProducts_ItemDataBound">
            <ItemTemplate>
                <div class="col-sm-4 col-md-4 col-lg-3 ">
                    <div class="thumbnail" style="background-color:white; width:100%;">
                        <img src="images/<%# Eval("image")%>" class=" img" style="width:300px; height:300px;" />
                        <div class="caption">
                            <div class="hidden">Title: <%#Eval("productsID")%></div>
                            <div class="ProductName">Title: <%#Eval("name")%></div>
                            <div class="ProductPrice">Price: £<%# Eval("price")%></div>  
                            <asp:Button ID="addItem" CommandName="addItem" CommandArgument='<%#Eval("productsID")%>' CssClass="btn btn-success btn-sm" runat="server" Visible="false" Text="Add" OnClick="addItem_Click" />             
                        </div>
                    </div>
                </div>
            </ItemTemplate>
        </asp:Repeater> 
    </div>

我将如何获得对 aspx 文件中按钮的控制权,我想仅在创建会话时将按钮的可见性更改为 true。

由于您已经有 ItemDataBound 事件,因此您可以轻松地在事件中检索 addItem 并将其设置为可见值。

protected void rptrProducts_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || 
        e.Item.ItemType == ListItemType.AlternatingItem)
    {
        var addItem = e.Item.FindControl("addItem") as Button;
        addItem.Visible = Convert.ToBoolean(Session["SomeValue"]);
    }
}

您可以编辑按钮的Visible属性:

  1. 直接在数据绑定时(ItemDataBound事件中的 aspx 或代码隐藏(

    <asp:Button ... Visible='<%# IsLogged() %>' />     
    

    在代码隐藏中:

    protected bool IsLogged()
    {
         return Session != null && Convert.ToBool(Session["IsLogged"]);
    }
    

最新更新