我在一個updatepanel內使用GridView。 我有gridview生成的編輯和取消按鈕。updatepanel只更新第一次,然後不會再更新
我第一次點擊編輯時,gridview編輯模板顯示正常。然後,如果我點擊取消,或在另一行上編輯,沒有任何反應。似乎更新面板已停止工作。
如果我做同樣的事情,而不更新面板回發工作正常,在GridView做什麼它應該(雖然這是相當繁瑣的,因爲它刷新整個頁面,這就是爲什麼我要使用的UpdatePanel!)
<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();
}
任何想法,將是一個很大的幫助。 謝謝。
它可能會默默地失敗。你有沒有調試過,以檢查是否第二次到達後面的代碼以及發生了什麼? –
它看起來很好地貫穿一切,只是沒有在最後更新。如果更新面板也被取出,這一切都可以正常工作。 –
您是否收到任何Javascript錯誤? – H27studio