I have a problem with a gridview that sits on a tabbed panel, which contains an update panel. The grid displays items a client has purchased in the past, it links to the clientID label on the form, but the primary key is the linenumber.
I use the builtin update and everything work well, I was using the built in Delete (i.e. I write no code but it gets called) but wanted to add a confirmation of delete and that stopped working, so I used rowcommand to do the delete, it deletes the data fine, but when I rebind the grid and update the panel it does not show on the screen, if I force a refresh of the page the gridview then shows the correct date.
Here is the HTML portion of the code:
<ajaxToolkit:TabContainer ID="tabcCustomer" runat="server" ActiveTabIndex="1" AutoPostBack="true" ><ajaxToolkit:TabPanel runat="server" HeaderText="Next Required" ID="tabpnlNextRequired"><HeaderTemplate>Next Items Required</HeaderTemplate><ContentTemplate><asp:UpdatePanel ID="upnlNextItems" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true" ><ContentTemplate><div style="padding:4px">
//... code in the first tab</div></ContentTemplate><Triggers><asp:AsyncPostBackTrigger ControlID="btnForceNext" EventName="Click" /></Triggers></asp:UpdatePanel></ContentTemplate></ajaxToolkit:TabPanel><ajaxToolkit:TabPanel runat="server" HeaderText="Items" ID="tabpnlItems"><HeaderTemplate>Customer Usage</HeaderTemplate><ContentTemplate><asp:UpdateProgress ID="updtprgItems" runat="server" AssociatedUpdatePanelID="upnlItems"><ProgressTemplate><img src="../images/animi/BlueArrowsUpdate.gif" alt="updating" width="16" height="16" />please wait.....</ProgressTemplate></asp:UpdateProgress><asp:UpdatePanel ID="upnlItems" runat="server" UpdateMode="Conditional" ><ContentTemplate><div class="simpleForm" style="padding: 4px"><div class="simpleLightGreenForm"><asp:GridView ID="gvItems" runat="server" AllowSorting="True" CssClass="TblWhite small" EmptyDataText="no data yet"
AutoGenerateColumns="False" DataSourceID="odsItemUsage" AllowPaging="True" PagerSettings-Mode="NextPreviousFirstLast"
DataKeyNames="ClientUsageLineNo" OnRowCommand="gvItems_RowCommand" DataKey="ClientUsageLineNo"
PageSize="15" PagerSettings-FirstPageImageUrl="~/images/imgButtons/FirstPage.gif"
PagerSettings-LastPageImageUrl="~/images/imgButtons/LastPage.gif"
PagerSettings-NextPageImageUrl="~/images/imgButtons/NextPage.gif" PagerSettings-PreviousPageImageUrl="~/images/imgButtons/LastPage.gif" ><Columns><asp:TemplateField ShowHeader="False"><EditItemTemplate><asp:ImageButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update"
AlternateText="Update" ImageUrl="~/images/imgButtons/UpdateItem.gif" /> <asp:ImageButton ID="CancelButton" runat="server" CausesValidation="False" CommandName="Cancel"
AlternateText="Cancel" ImageUrl="~/images/imgButtons/CancelItem.gif" /></EditItemTemplate><ItemTemplate><asp:ImageButton ID="EditButton" runat="server" CausesValidation="False" CommandName="Edit"
AlternateText="Edit" ImageUrl="~/images/imgButtons/EditItem.gif" /> <asp:ImageButton ID="DeleteButton" runat="server" CausesValidation="False" CommandName="Delete"
AlternateText="Delete" ImageUrl="~/images/imgButtons/DelItem.gif"
OnClientClick="return confirm('Are you sure you want to delete this item?');"
CommandArgument='<%# Eval("ClientUsageLineNo") %>' /></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="Date" SortExpression="Date"><EditItemTemplate><asp:TextBox ID="tbxDate" runat="server" Text='<%# Bind("ItemDate", "{0:d}") %>' /></EditItemTemplate><ItemTemplate><asp:Label ID="lblData" runat="server" Text='<%# Bind("ItemDate", "{0:d}") %>' /></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="Item" ><EditItemTemplate><asp:DropDownList ID="ddlItems" runat="server" DataSourceID="odsItems"
DataTextField="ItemDesc" DataValueField="ItemTypeID" AppendDataBoundItems="true"
SelectedValue='<%# Bind("ItemProvidedID") %>'><asp:ListItem Value="0" Text="n/a" /></asp:DropDownList></EditItemTemplate><ItemTemplate><asp:Label ID="ItemDescLabel" runat="server" Text='<%# GetItemDesc((int)Eval("ItemProvidedID")) %>' /></ItemTemplate></asp:TemplateField><asp:BoundField DataField="AmountProvided" HeaderText="Qty"
SortExpression="AmountProvided" /><asp:TemplateField HeaderText="Packaging" SortExpression="PackagingID"><EditItemTemplate><asp:DropDownList ID="ddlPackaging" runat="server" DataSourceID="odsPackagingTypes"
DataTextField="Description" DataValueField="PackagingID" AppendDataBoundItems="true"
SelectedValue = '<%# Bind("PackagingID") %>' ><asp:ListItem Value="0" Text="n/a" /></asp:DropDownList></EditItemTemplate><ItemTemplate><asp:Label ID="PackagingIDLabel" runat="server" Text='<%# GetPackagingDesc((int)Eval("PackagingID")) %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="Prep Type" SortExpression="PrepTypeID"><EditItemTemplate><asp:TextBox ID="PrepTypeIDTextBox" runat="server" Text='<%# Bind("PrepTypeID") %>'></asp:TextBox></EditItemTemplate><ItemTemplate><asp:Label ID="PrepTypeIDLabel" runat="server" Text='<%# Bind("PrepTypeID") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:BoundField DataField="Notes" HeaderText="Notes"
SortExpression="Notes" /><asp:BoundField DataField="CustomerID" Visible="False" /><asp:BoundField DataField="ClientUsageLineNo" Visible="False" /></Columns><PagerSettings FirstPageImageUrl="~/images/imgButtons/FirstPage.gif" LastPageImageUrl="~/images/imgButtons/LastPage.gif" Mode="NumericFirstLast" NextPageImageUrl="~/images/imgButtons/NextPage.gif" PreviousPageImageUrl="~/images/imgButtons/LastPage.gif" /></asp:GridView></div></div></ContentTemplate><Triggers><asp:AsyncPostBackTrigger ControlID="gvItems" EventName="RowCommand" /></Triggers></asp:UpdatePanel></ContentTemplate></ajaxToolkit:TabPanel></ajaxToolkit:TabContainer><asp:ObjectDataSource ID="odsItemUsage" runat="server" TypeName="TrackerDotNet.control.ItemUsageTbl"
SortParameterName="SortBy"
SelectMethod="GetAllItemsUsed"
OldValuesParameterFormatString="original_{0}" UpdateMethod="UpdateItemsUsed" DeleteMethod="DeleteItemLine" ><DeleteParameters><asp:Parameter Name="ClientUsageLineNo" Type="Int64" /></DeleteParameters><SelectParameters><asp:ControlParameter ControlID="CompanyIDLabel" DefaultValue="0"
Name="pCustomerID" PropertyName="Text" Type="Int64" /><asp:Parameter DefaultValue=""Date"" Name="SortBy" Type="String" /></SelectParameters><UpdateParameters><asp:Parameter Name="CustomerID" Type="Int64" /><asp:Parameter Name="ItemDate" Type="DateTime" /><asp:Parameter Name="ItemProvidedID" Type="Int32" /><asp:Parameter Name="AmountProvided" Type="Double" /><asp:Parameter Name="PrepTypeID" Type="Int32" /><asp:Parameter Name="PackagingID" Type="Int32" /><asp:Parameter Name="Notes" Type="String" /><asp:Parameter Name="original_ClientUsageLineNo" Type="Int64" /></UpdateParameters></asp:ObjectDataSource>The the code behind for the rowcommand, it calls the objectdatasource directly using the keyfield and deletes the row then updates the grid and the updatepanel - but nothing happens, except the udpdateprogress shows for a while, showing the update event is triggered:
protected void gvItems_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
ItemUsageTbl _ItemUsage = new ItemUsageTbl();
_ItemUsage.ClientUsageLineNo = Convert.ToInt64(e.CommandArgument);
_ItemUsage.DeleteItemLine(_ItemUsage.ClientUsageLineNo);
gvItems.DataBind();
upnlItems.Update();
}
}