Updatepanel updates only the first time, after which it will not be updated again

I use GridView in the updated panel. I have mesh buttons for editing and canceling.

The first time I click the "Edit" button, the gridview edit template is displayed in order. Then, if I click cancel or edit on a different line, nothing will happen. It seems that the update panel has stopped working.

If I do the same without the update panel, postback works fine and gridview does what it should (although it is rather cumbersome as it refreshes the whole page, so I want to use the update panel!)

<asp:UpdatePanel ID="upSentOrders" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:GridView ID="gvSentOrders" runat="server" autogeneratecolumns="False" allowpaging="false" DataKeyNames="titxn_id" AlternatingRowStyle-CssClass="gvAlternate" CssClass="gvTable" OnRowDataBound="addSentTotals" OnRowEditing="editOrder" OnRowCancelingEdit="cancelEdit" OnDataBound="showSentTotals" AutoGenerateEditButton="true" AutoGenerateDeleteButton="false" ShowFooter="true" ShowHeader="true"> <Columns> <asp:TemplateField> <HeaderTemplate> <table class="basketHeader"> <tr> <td class="basketTitle"><asp:Label ID="lblTitle" runat="server" Text="Order Date" /></td> <td class="basketPX"><asp:Label ID="lblPXOffer" runat="server" Text="Part Ex" /></td> <td class="basketCash"><asp:Label ID="lblCashOffer" runat="server" Text="Cash" /></td> <td class="basketDelete">&nbsp;</td> </tr> </table> </HeaderTemplate> <ItemTemplate> <table class="basket"> <tr> <td class="basketTitle"><asp:Label ID="lblTitle" runat="server" Text='<%# String.Format("{0:dd MMMM yyyy}", Eval("titxn_date")) %>' /></td> <td class="basketPX"><asp:Label ID="lblPXOfferItem" runat="server" Text='<%# "£" + Eval("titxn_totalpxatsend") %>' /></td> <td class="basketCash"><asp:Label ID="lblCashOfferItem" runat="server" Text='<%# "£" + Eval("titxn_totalcashatsend") %>' /></td> <td class="basketDelete"><asp:Button ID="btnEdit" Text="" CommandArgument="1" runat="server" CssClass="editButton" ToolTip="View Order" OnClick="viewOrder" /></td> </tr> </table> </ItemTemplate> <EditItemTemplate> <table class="basket"> <tr> <td class="basketTitle"><asp:Label ID="lblTitle" runat="server" Text='<%# String.Format("{0:dd MMMM yyyy}", Eval("titxn_date")) %>' /></td> <td class="basketPX"><asp:Label ID="lblPXOfferItem" runat="server" Text='<%# "£" + Eval("titxn_totalpxatsend") %>' /></td> <td class="basketCash"><asp:Label ID="lblCashOfferItem" runat="server" Text='<%# "£" + Eval("titxn_totalcashatsend") %>' /></td> <td class="basketDelete"><asp:Button ID="btnStopEdit" Text="" CommandArgument="-1" runat="server" CssClass="stopEditButton" ToolTip="View Order" OnClick="viewOrder" /></td> </tr> <tr> <td colspan="4"> Items GridView here... </td> </tr> <tr> <td colspan="4"> <asp:Label ID="lblAddress" runat="server" Text='<%# Eval("titxn_name") + ", " + Eval("titxn_addressnumber") + " " + Eval("titxn_addressone") + ", " + Eval("titxn_addresstown") + ", " + Eval("titxn_addresscounty") + ", " + Eval("titxn_addresscountry") + ", " + Eval("titxn_addresspostcode") + "." %>' /> </td> </tr> </table> </EditItemTemplate> <FooterTemplate> <table class="basketTotals"> <tr> <td class="basketTitle">Total Still To Arrive</td> <td class="basketPX"><asp:Label ID="lblPxTotal" runat="server" Text="" /></td> <td class="basketCash"><asp:Label ID="lblCashTotal" runat="server" Text="" /></td> <td class="basketDelete">&nbsp;</td> </tr> </table> </FooterTemplate> </asp:TemplateField> </Columns> <EmptyDataTemplate> <p>There is no orders still being processed. Look like we've already completed all the orders you've sent us!</p> </EmptyDataTemplate> </asp:GridView> </ContentTemplate> </asp:UpdatePanel> 

The code is behind ....

 protected void editOrder(object sender, GridViewEditEventArgs e) { gvSentOrders.EditIndex = e.NewEditIndex; bindSentGridView(); } protected void cancelEdit(object sender, GridViewCancelEditEventArgs e) { gvSentOrders.EditIndex = -1; bindSentGridView(); } 

Any thoughts would be of great help. Thanks.

+4
source share
3 answers

It was a JS error from another bit of code that stopped updating the AJAX panel.

+4
source

Since UpdatePanel has the property UpdateMode = "Conditional", you need to update it with codebehind for each postback:

 protected void editOrder(object sender, GridViewEditEventArgs e) { gvSentOrders.EditIndex = e.NewEditIndex; bindSentGridView(); upSentOrders.Update(); } protected void cancelEdit(object sender, GridViewCancelEditEventArgs e) { gvSentOrders.EditIndex = -1; bindSentGridView(); upSentOrders.Update(); } 

Hope this helps.

+2
source

Just to do the test:

 <asp:UpdatePanel ID="upSentOrders" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true"> 

Be sure to set the GridView property EnableSortingAndPagingCallbacks = false;

0
source

Source: https://habr.com/ru/post/1392693/


All Articles