触发器无法在GridView中找到按钮

本文关键字:按钮 GridView 触发器 | 更新日期: 2023-09-27 18:05:46

我在GridView的模板字段中有一个按钮和几个文件上传控件。GridView是在一个UpdatePanel和我注册的按钮与Postbacktrigger在GridView_RowDataBound事件。

protected void OrderGrid_RowDataBound(object sender, GridViewRowEventArgs e)  
{  
   Button lb = e.Row.FindControl("MarkAsCompleteButton") as Button;  
   ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(lb);  
}  

它抛出一个错误,"控制lb无法在UpdatePanel中找到触发器"。

谁能建议如何解决这个问题?

谢谢。

触发器无法在GridView中找到按钮

我猜你的按钮可以在你的数据行,而不是在标题行或页脚行。因此,只有当实际行是dataRow时,才需要添加按钮。

protected void OrderGrid_RowDataBound(object sender, GridViewRowEventArgs e)  
{  
   if (e.Row.RowType != DataControlRowType.DataRow) return;
   Button lb = e.Row.FindControl("MarkAsCompleteButton") as Button;  
   ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(lb);  
}  

这里做错了几件事。

  1. 文件上传不能在updatepanel中工作。换句话说,文件上传不会异步工作。因此,您需要始终创建完整的回发。

  2. 如果你真的想要gridview中的一些按钮控件来创建部分回发,可以考虑将gridview RowCommand事件本身作为updatepanel的AsyncTrigger。


<asp:UpdatePanel runat="server">
    <ContentTemplate>
        <asp:GridView ID="GridView1" runat="server" ... OnRowCommand="GridView1_RowCommand">
            ...
        </asp:GridView>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="GridView1" EventName="RowCommand"/>
    </Triggers>
</asp:UpdatePanel>