I have a RadGrid control which does not refresh to display the correct number of listings after a new listing is created or an existing listing deleted from the DB.
Relevant parts from my code are as follows:
Listing.aspx
<!-- JavaScript function that is called when menu items are clicked --> <script type="text/javascript" language="javascript"> function OnClicking_product_action(sender, eventArgs) { var item = eventArgs.get_item(); var sArg = item.get_value(); var sLevel = item.get_level(); if (sLevel != 1) { return false; } else { if (sArg.substring(0, 3) == "SEL") { var sArgArr = sArg.split(':'); var btnID = sArgArr[3]; var btn_option = document.getElementById(btnID); btn_option.click(); } else { $find("<%= RadAjaxManager1.ClientID %>").ajaxRequest(item.get_value()); } } } </script><rada:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest" EnableAJAX="true"> <AjaxSettings> <rada:AjaxSetting AjaxControlID="RadAjaxManager1"> <UpdatedControls> <rada:AjaxUpdatedControl ControlID="rg_listing" /> <rada:AjaxUpdatedControl ControlID="lbl_exc_msg" /> <rada:AjaxUpdatedControl ControlID="lbl_existing_listing" /> <rada:AjaxUpdatedControl ControlID="rg_listing" LoadingPanelID="alp_bline" /> <rada:AjaxUpdatedControl ControlID="pnl_new_listing" /> <rada:AjaxUpdatedControl ControlID="pnlModify" /> <rada:AjaxUpdatedControl ControlID="pnl_nav_bottom" /> </UpdatedControls> </rada:AjaxSetting> <rada:AjaxSetting AjaxControlID="rg_listing"> <UpdatedControls> <rada:AjaxUpdatedControl ControlID="rg_listing" /> <rada:AjaxUpdatedControl ControlID="lbl_exc_msg" /> <rada:AjaxUpdatedControl ControlID="lbl_existing_listing" /> <rada:AjaxUpdatedControl ControlID="rg_listing" LoadingPanelID="alp_bline" /> <rada:AjaxUpdatedControl ControlID="pnl_new_listing" /> <rada:AjaxUpdatedControl ControlID="pnlModify" /> <rada:AjaxUpdatedControl ControlID="pnl_nav_bottom" /> <rada:AjaxUpdatedControl ControlID="btnSaveListing" /> </UpdatedControls> </rada:AjaxSetting> <rada:AjaxSetting AjaxControlID="btnEditListing"> <UpdatedControls> <rada:AjaxUpdatedControl ControlID="lbl_exc_msg" /> <rada:AjaxUpdatedControl ControlID="lbl_existing_listing" /> <rada:AjaxUpdatedControl ControlID="rg_listing" /> <rada:AjaxUpdatedControl ControlID="pnl_new_listing" /> <rada:AjaxUpdatedControl ControlID="pnlModify" LoadingPanelID="alp_bline" /> <rada:AjaxUpdatedControl ControlID="pnl_nav_bottom" /> <rada:AjaxUpdatedControl ControlID="btnSaveListing" /> </UpdatedControls> </rada:AjaxSetting> <rada:AjaxSetting AjaxControlID="btnSaveListing"> <UpdatedControls> <rada:AjaxUpdatedControl ControlID="lbl_exc_msg" /> <rada:AjaxUpdatedControl ControlID="lbl_existing_listing" /> <rada:AjaxUpdatedControl ControlID="rg_listing" /> <rada:AjaxUpdatedControl ControlID="pnl_new_listing" /> <rada:AjaxUpdatedControl ControlID="pnlModify" LoadingPanelID="alp_bline" /> <rada:AjaxUpdatedControl ControlID="pnl_nav_bottom" /> <rada:AjaxUpdatedControl ControlID="btnSaveListing" /> </UpdatedControls> </rada:AjaxSetting> </AjaxSettings> </rada:RadAjaxManager> <rada:RadAjaxLoadingPanel ID="alp_bline" runat="server"> <div align="center" style="margin-top: 8px; margin-left: 2px"> <img alt="loading..." src="../Images/Loading/Loading_Line_SmoothBlueBox.gif" /> </div> </rada:RadAjaxLoadingPanel> <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <radg:RadGrid ID="rg_listing" runat="server" EnableEmbeddedSkins="true" Skin="Sunset" ForeColor="Black" Width="880" CellPadding="2" Font-Names="Verdana" Font-Size="X-Small" BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" AutoGenerateColumns="False" SelectedItemStyle-CssClass="GoldRow" GridLines="None" OnItemCommand="rg_listing_ItemCommand" OnItemDataBound="rg_listing_ItemDataBound" OnDataBound="rg_listing_DataBound" OnDeleteCommand="rg_listing_DeleteCommand"> <MasterTableView AllowSorting="True" DataKeyNames="listing_id" GridLines="Vertical" AllowCustomSorting="True"> <FooterStyle BackColor="Tan"></FooterStyle> <AlternatingItemStyle BackColor="PaleGoldenrod" HorizontalAlign="Center"></AlternatingItemStyle> <ItemStyle HorizontalAlign="Center" BackColor="lightgoldenrodyellow"></ItemStyle> <HeaderStyle Font-Bold="True" HorizontalAlign="Center" BackColor="Tan"></HeaderStyle> <Columns> <radg:GridTemplateColumn UniqueName="SelectColumn" Display="false"> <ItemTemplate></ItemTemplate> </radg:GridTemplateColumn> <radg:GridTemplateColumn UniqueName="MenuColumn"> <ItemTemplate> <asp:Button ID="btnSelect" runat="server" Width="65" CausesValidation="false" CommandName="Select" Text="Edit" CssClass="noshow"></asp:Button> <asp:Button ID="btnCancel" runat="server" Width="65" CausesValidation="false" CommandName="Deselect" Text="Cancel" CssClass="noshow"></asp:Button> <asp:Panel ID="pnl_menu" runat="server"> <radM:RadMenu ID="radm_listing_action" runat="server" CausesValidation="False" Font-Bold="True" EnableEmbeddedSkins="true" Skin="Sunset" ToolTip="Click to Select Product Action" Height="16" Width="65" OnClientItemClicked="OnClicking_product_action"> <Items> <radM:RadMenuItem ID="action_root" runat="server" Text="MENU" Width="65"> <Items> <radM:RadMenuItem ID="action_select" runat="server" Text="Select" Value="SELECT" ForeColor="Blue"></radM:RadMenuItem> <radM:RadMenuItem ID="action_copy" runat="server" Text="Copy" Value="COPY"></radM:RadMenuItem> <radM:RadMenuItem ID="action_delete" runat="server" Text="Delete" Value="DELETE" ForeColor="Red"></radM:RadMenuItem> </Items> </radM:RadMenuItem> </Items> </radM:RadMenu> </asp:Panel> </ItemTemplate> </radg:GridTemplateColumn> <radg:GridTemplateColumn HeaderText="ID" UniqueName="TemplateColumn"> <ItemTemplate> <asp:Label ID="lblListingAlias" runat="server" Font-Bold="true" Text='<%# DataBinder.Eval(Container, "DataItem.listing_alias") %>'></asp:Label> - <asp:Label ID="lblListingID" runat="server" CssClass="helptext_blue" Text='<%# DataBinder.Eval(Container, "DataItem.listing_id") %>'>lblListingID</asp:Label> <br /> <div class="helptext_gray"> <asp:Label runat="server" ID="lblAFListingID" Text='<%# DataBinder.Eval(Container, "DataItem.af_listing_id") %>'></asp:Label> </div> </ItemTemplate> </radg:GridTemplateColumn> <radg:GridTemplateColumn Visible="False" HeaderText="Address ID" UniqueName="TemplateColumn1"> <ItemTemplate> <asp:Label ID="lblAddressID" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.address_id") %>'></asp:Label> </ItemTemplate> </radg:GridTemplateColumn> <radg:GridTemplateColumn HeaderText="Listed Name" UniqueName="TemplateColumn2"> <ItemTemplate> <asp:Label ID="lblListedName" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.listed_name") %>'></asp:Label> </ItemTemplate> </radg:GridTemplateColumn> <radg:GridTemplateColumn HeaderText="CTN" UniqueName="Column_CTN" Visible="False"> <ItemTemplate> <asp:Panel ID="pnl_ctn_phone" runat="server" Wrap="false"> <asp:Label ID="lbl_ctn_phone" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.ctn") %>'></asp:Label> </asp:Panel> <asp:Panel ID="pnl_ctn" runat="server" Wrap="false"> <asp:Label ID="lbl_ctn" runat="server"></asp:Label> </asp:Panel> </ItemTemplate> </radg:GridTemplateColumn> <radg:GridTemplateColumn HeaderText="Listing Phone" UniqueName="TemplateColumn3"> <ItemTemplate> <asp:Panel ID="pnl_listing_phone" runat="server" Wrap="false"> <asp:Label ID="lblListedPhone" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.phone") %>'></asp:Label> <asp:Label ID="lbl_display_phone" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.display_phone") %>' CssClass="noshow"></asp:Label> <asp:Label ID="lbl_has_ctn_product" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.has_ctn_product") %>' CssClass="noshow"></asp:Label> </asp:Panel> </ItemTemplate> <HeaderStyle Width="80" /> </radg:GridTemplateColumn> <radg:GridTemplateColumn HeaderText="Address" Visible="False" UniqueName="TemplateColumn4"> <ItemTemplate> <asp:Label runat="server" ID="lblAddress" Text='<%# DataBinder.Eval(Container, "DataItem.address") %>'></asp:Label> </ItemTemplate> </radg:GridTemplateColumn> <radg:GridTemplateColumn HeaderText="City" Visible="False" UniqueName="TemplateColumn5"> <ItemTemplate> <asp:Label runat="server" ID="lblCity" Text='<%# DataBinder.Eval(Container, "DataItem.city_desc") %>'></asp:Label> </ItemTemplate> </radg:GridTemplateColumn> <radg:GridTemplateColumn HeaderText="State" Visible="False" UniqueName="TemplateColumn6"> <ItemTemplate> <asp:Label runat="server" ID="lblState" Text='<%# DataBinder.Eval(Container, "DataItem.state_id") %>'></asp:Label> </ItemTemplate> </radg:GridTemplateColumn> <radg:GridTemplateColumn HeaderText="Zip" Visible="False" UniqueName="TemplateColumn7"> <ItemTemplate> <asp:Label runat="server" ID="lblZip" Text='<%# DataBinder.Eval(Container, "DataItem.zip") %>'></asp:Label> </ItemTemplate> </radg:GridTemplateColumn> <radg:GridTemplateColumn HeaderText="Listing Address" UniqueName="TemplateColumn8"> <ItemTemplate> <asp:Label runat="server" ID="lbl_address_all"></asp:Label> </ItemTemplate> </radg:GridTemplateColumn> <radg:GridTemplateColumn HeaderText="Main Heading" UniqueName="TemplateColumn9"> <ItemTemplate> <asp:Label runat="server" ID="lbl_heading_name" Text='<%# DataBinder.Eval(Container, "DataItem.heading_name") %>'></asp:Label><br /> <asp:Label runat="server" ID="lbl_heading_code" Text='<%# DataBinder.Eval(Container, "DataItem.heading_code") %>'></asp:Label> </ItemTemplate> </radg:GridTemplateColumn> <radg:GridTemplateColumn HeaderText="Display Details" UniqueName="TemplateColumn10"> <HeaderStyle Width="140px" /> <ItemTemplate> <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; height: 100%"> <tr> <td align="left" valign="middle" style="white-space: nowrap"> <asp:Label ID="lbl_ppc" runat="server" Visible="false" ForeColor="gray" CssClass="formtext2" Text="Local PPC Listing"></asp:Label> <asp:Label ID="lbl_omit_address_ind" Visible="false" runat="server" CssClass="formtext" Text='<%# DataBinder.Eval(Container, "DataItem.omit_address_ind") %>'></asp:Label> <asp:Label ID="lbl_omit_desc" runat="server" CssClass="formtext2" Text='<%# DataBinder.Eval(Container, "DataItem.omit_address_desc") %>'></asp:Label> <asp:Label ID="lbl_omit_ctc" runat="server" ForeColor="tomato" CssClass="formtext2" Text="- Omit Click to Call<br>"></asp:Label> <asp:Label ID="lbl_omit_review" runat="server" ForeColor="tomato" CssClass="formtext2" Text="- Omit Ratings & Reviews<br>"></asp:Label> <asp:CheckBox ID="chkOmitCtc" runat="server" CssClass="formtext" Text="Click To Call" Visible="false" Checked='<%# DataBinder.Eval(Container, "DataItem.omit_click_to_call") %>' Enabled="False"></asp:CheckBox> <asp:CheckBox ID="chkOmitReview" runat="server" CssClass="formtext" Text="Ratings & Reviews" Visible="false" Checked='<%# DataBinder.Eval(Container, "DataItem.omit_ratings_reviews") %>' Enabled="False"></asp:CheckBox> </td> </tr> </table> </ItemTemplate> <HeaderStyle Width="155" /> </radg:GridTemplateColumn> <radg:GridTemplateColumn HeaderText="More Info" UniqueName="col_moreinfo"> <ItemTemplate> <asp:HyperLink ID="hlnk_ListingAdCopy_MoreInfo" runat="server" CssClass="formtext_blue_bold_ul" Text="Listing/MoreInfo" ToolTip="Click here to view/edit Listing Ad Copy/More Info"> </asp:HyperLink> </ItemTemplate> <HeaderStyle Width="85" /> </radg:GridTemplateColumn> <radg:GridTemplateColumn Visible="False" HeaderText="Details" UniqueName="TemplateColumn11"> <HeaderStyle Width="175px"></HeaderStyle> <ItemTemplate> Last Modified: <asp:Label ID="lblListingMtd" CssClass="formtext" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.modified_dtm") %>'> </asp:Label><br> Created On: <asp:Label ID="lblListingCtd" CssClass="formtext" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.created_dtm") %>'> </asp:Label> </ItemTemplate> </radg:GridTemplateColumn> <radg:GridTemplateColumn HeaderText="Delete" UniqueName="TemplateColumn12" Visible="false"> <ItemTemplate> <asp:LinkButton runat="server" Text="Delete" CommandName="Delete" CausesValidation="false" CssClass="formfield_red" ID="Linkbutton1"></asp:LinkButton> </ItemTemplate> </radg:GridTemplateColumn> </Columns> <ExpandCollapseColumn Visible="False"> <HeaderStyle Width="19px" /> </ExpandCollapseColumn> <RowIndicatorColumn Visible="False"> <HeaderStyle Width="20px" /> </RowIndicatorColumn> </MasterTableView> <SelectedItemStyle BackColor="#FFCC00" /> </radg:RadGrid> Listing.aspx.cs
private int BindListingGrid() { int cntListings = 0; try { DataTable dtListing = PopulateGridListing(int.Parse(str_order_id)); cntListings = dtListing.Rows.Count; if (cntListings > 0) { rg_listing.DataSource = dtListing; rg_listing.DataBind(); btnNext.Enabled = true; lbl_existing_listing.Text = "Current Listings For This Customer: " + cntListings.ToString(); } else { btnNext.Enabled = false; lbl_existing_listing.Text = "No Listings Found. Please \"Create Listing\" to continue."; } } catch (Exception ex) { ExceptionManager.LogAndDisplayException(ex, "BindListingGrid() in SOLO\\WebForms\\listing_main.aspx"); } return cntListings; } The 'action_copy' and 'action_delete' menu items, when clicked, call the 'RadAjaxManager1_AjaxRequest' method which adds or deletes a listing from the DB depending on the menu item clicked and then calls the BindListingGrid() method as mentioned above. While debugging at runtinme I have confirmed that the DataTable has the correct number of records/listings in it before trying to bind the RadGrid (rg_listing) with it in the BindListingGrid() method but still the RadGrid does not refresh to reflect those items and still displays the older items in it.
Any help will be appreciated.
Regards,
Paras Wadehra