Full postback triggered by LinkButton inside GridView inside UpdatePanel

5599 ワード

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
http://stackoverflow.com/questions/4872210/full-postback-triggered-by-linkbutton-inside-gridview-inside-updatepanel