在页面加载时在datalist中查找控件

时间:2012-10-07 00:14:59

标签: c# asp.net visual-studio-2010

我想在页面加载方法的datalist中找到一个项目,这是我的代码

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");  
     }  
 }

但是这个错误在我看来:无法将'ASP.default2_aspx'类型的对象强制转换为'System.Web.UI.WebControls.LinkBut​​ton'。

2 个答案:

答案 0 :(得分:1)

Page_Load不是由LinkBut​​ton触发的事件,因此发件人不能是LinkBut​​ton。这是一个Page事件。请改用OnItemDataBound

标记

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

代码隐藏

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";
}

答案 1 :(得分:0)

在这一行:

LinkButton LinkButton6 = (LinkButton)sender;

sender对象是Page,而不是LinkButton,不是吗?