简体   繁体   中英

find control inside datalist on page load

I want to find an item in the datalist on page load method this is my code

protected void Page_Load(object sender, EventArgs e)
{
    //some code here

    for (int i = 0; i < count  ; i++)
    {
        LinkButton LinkButton6 = (LinkButton)sender;
        DataListItem item = (DataListItem)LinkButton6.NamingContainer;
        LinkButton lnkbtn6 = (LinkButton)DataList1.Items[item.ItemIndex].FindControl("LinkButton6");  
     }  
 }

but this error appears to me :Unable to cast object of type 'ASP.default2_aspx' to type 'System.Web.UI.WebControls.LinkButton'.

Page_Load is not an event triggered by LinkButton so sender cannot be a LinkButton. It is a Page event. Use OnItemDataBound instead

Markup

<asp:DataList OnItemDataBound="DataList1_OnItemDataBound" runat="server" ID="MdataList">
<ItemTemplate>
    <asp:LinkButton runat="server" ID="LinkButton6" Text="Text"></asp:LinkButton>
</ItemTemplate>
</asp:DataList>

Codebehind

protected void Page_Load(object sender, EventArgs e)
{

}

protected void DataList1_OnItemDataBound(object sender, DataListItemEventArgs e)
{
    LinkButton lnkBtn6 = (LinkButton)e.Item.FindControl("LinkButton6");
    lnkBtn6.Text = "Some Text Here";
}

On this line:

LinkButton LinkButton6 = (LinkButton)sender;

the sender object is the Page , not LinkButton , isn't it?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM