Я использую GridView в панели обновления.
У меня есть сетка, сгенерированная кнопками редактирования и отмены.
При первом нажатии кнопки «Изменить» шаблон редактирования сетки отображается нормально. Затем, если я нажму «Отмена» или отредактирую другой ряд, ничего не произойдет. Кажется, перестала работать панель обновления.
Если я делаю то же самое без панели обновления, обратная передача работает нормально, а gridview делает то, что должен (хотя он довольно громоздкий, поскольку обновляет всю страницу, поэтому я хочу использовать панель обновления!)
<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"> </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"> </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>
Код позади ....
protected void editOrder(object sender, GridViewEditEventArgs e)
{
gvSentOrders.EditIndex = e.NewEditIndex;
bindSentGridView();
}
protected void cancelEdit(object sender, GridViewCancelEditEventArgs e)
{
gvSentOrders.EditIndex = -1;
bindSentGridView();
}
Любые мысли очень помогли бы.
Спасибо.