在页面加载时在Repeater Itemtemplate中查找Linkbutton

时间:2015-04-06 10:22:03

标签: asp.net repeater linkbutton findcontrol

我在 Repeater ItemTemplate 中使用 LinkBut​​ton ,但如果我的LinkBut​​ton为NULL,那么我不想显示此Linkbutton。我可以在页面加载上控制此LinkBut​​ton吗?

<asp:Repeater ID="rptSlider" runat="server" >
     <ItemTemplate>
        <li>
           .....
               <asp:LinkButton ID="lb_url" PostBackUrl='<%#Eval("button_url") %>' runat="server">Go</asp:LinkButton>
            ...
        </li>
     </ItemTemplate>

2 个答案:

答案 0 :(得分:1)

在页面加载事件中尝试这种方式

LinkButton linkButton= (LinkButton)Repeater1.Items[0].FindControl("lb_url");
linkButton.Visible = false;

但我建议使用ItemDataBound事件来设置链接按钮的可见性。

protected void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item ||
        e.Item.ItemType == ListItemType.AlternatingItem)
    {
        var linkButton= e.Item.FindControl("lb_url") as LinkButton;
      // set link-button visibility 
    }
}

答案 1 :(得分:0)

您可以在ItemCommand下检查相同内容。请检查以下代码是否有效。

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    string url=((LinkButton)e.CommandSource).Text;

    if (string.IsNullOrEmpty(url))

        ((LinkButton)e.CommandSource).Visible=false;
    else

         ((LinkButton)e.CommandSource).Visible=true; 

}