我在转发器控件中有一个按钮,我想禁用它。我试过这样的事......
if (Session["USER_ID"] == null)
{
//disable download button and
}
else
{
//enable download button
}
这是我要启用和禁用btnTEST
<asp:Repeater ID="Repeater1" runat="server"
OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<asp:Image ID="image" ImageUrl='<%# Eval("image_src")%>' runat="server" />
<asp:Button ID="btnTEST" runat="server" Text="Click Me!" CommandName="testme" Enabled="False" />
</ItemTemplate>
</asp:Repeater>
我无法使用它:
btnTest.Enabled = True;
由于某种原因,它不起作用。
答案 0 :(得分:3)
由于按钮位于Repeater控件内部,因此它将动态生成与数据源数据绑定中的项目一样多的次数。因此,您必须启用/禁用repeater ItemDataBound-event上的按钮,如下所示:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Button btn = (Button)e.Item.FindControl("btnTEST");
if (Session["USER_ID"] != null)
{
btn.Enabled = true;
}
}
}
聚苯乙烯。无需禁用,因为默认情况下禁用该按钮。
答案 1 :(得分:1)
因为按钮位于转发器中。您需要禁用itemdatabound中的按钮。我建议你在后面的代码中添加这样的东西:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
Repeater1.ItemDataBound += (s, ev) =>
{
if (ev.Item.ItemType != ListItemType.AlternatingItem && ev.Item.ItemType != ListItemType.Item)
return;
var btnTest= ((System.Web.UI.WebControls.Button) ev.Item.FindControl("btnTEST"));
btnTest.Enabled = Session["USER_ID"] != null;
};
}