我在GridView内的模板字段中有一个Button和几个文件上传控件。 GridView位于UpdatePanel内,我在GridView_RowDataBound事件中使用Postbacktrigger注册了Button。
protected void OrderGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
Button lb = e.Row.FindControl("MarkAsCompleteButton") as Button;
ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(lb);
}
它在UpdatePanel"中找不到"无法找到控件lb的错误。
有谁能建议如何解决这个问题?
感谢。
答案 0 :(得分:0)
我猜您的按钮可以在数据行中找到,而不是在标题行或页脚行中找到。因此,您只想在实际行是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 :(得分:0)
这里的一些事情做得不正确。
文件上传在updatepanel中无法正常工作。换句话说,文件上传不会异步工作。因此,您需要始终创建完整的回发。
如果您真的想在gridview中使用某些按钮控件来创建部分回发,请考虑将GridView RowCommand事件本身作为更新面板的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>