触发器无法在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中找到触发器"。
谁能建议如何解决这个问题?
谢谢。
我猜你的按钮可以在你的数据行,而不是在标题行或页脚行。因此,只有当实际行是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);
}
这里做错了几件事。
-
文件上传不能在updatepanel中工作。换句话说,文件上传不会异步工作。因此,您需要始终创建完整的回发。
-
如果你真的想要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>