GridView inside of a UpdatePanel,get the button to trigger a partial postback
<asp:ScriptManager ID="ContentScriptManager" runat="server"/> <asp:UpdatePanel ID="ContentUpdatePanel" runat="server"ChildrenAsTriggers="true"> <ContentTemplate> <asp:GridView ID="OrderGrid" runat="server"AllowPaging="false"AllowSorting="false" AutoGenerateColumns="false"> <Columns> <asp:TemplateFieldHeaderText=""> <ItemTemplate> <asp:LinkButton ID="MarkAsCompleteButton" runat="server"Text="MarkAsComplete" CommandName="MarkAsComplete"CommandArgument='<%# Eval("Id") %>'/> </ItemTemplate> </asp:TemplateField> <asp:BoundFieldDataField="Name"HeaderText="Name"/> <asp:BoundFieldDataField="LoadDate"HeaderText="Load Date"/> <asp:BoundFieldDataField="EmployeeCutOffDate"HeaderText="Cut Off Date"/> <asp:BoundFieldDataField="IsComplete"HeaderText="Is Completed"/> </Columns> </asp:GridView> </ContentTemplate> </asp:UpdatePanel>
You need to register each and every LinkButton as an AsyncPostBackTrigger. After each row is bound in your GridView, you'll need to search for the LinkButton and register it through code as follows:
protected void OrderGrid_RowDataBound(object sender, GridViewRowEventArgs e) { LinkButton lb = e.Row.FindControl("MarkAsCompleteButton") as LinkButton; ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(lb); }
參考:
http://msdn.microsoft.com/en-us/library/system.web.ui.updatepanel.childrenastriggers.aspx