触发无法在GridView中找到Button

时间:2014-05-29 07:57:24

标签: c# asp.net gridview

我在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的错误。

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

感谢。

2 个答案:

答案 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)

这里的一些事情做得不正确。

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

  2. 如果您真的想在gridview中使用某些按钮控件来创建部分回发,请考虑将GridView RowCommand事件本身作为更新面板的AsyncTrigger。


  3. <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>