This is a migrated thread and some comments may be shown as answers.

RadGrid not refreshing.

3 Answers 111 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Colm
Top achievements
Rank 1
Colm asked on 10 Feb 2011, 07:54 AM

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

3 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 10 Feb 2011, 11:04 AM
Hello Colm,

I guess the problem occurs because you are using Simple data binding technique to populate the grid.. If you are using any advanced feature in grid(like insert, update, delete operation), then a better approach is using "AdvancedDataBinding" using NeedDataSource event. Then after deleting an item in grid you can Rebind the grid using Rebind() method(which in turn call the NeedDataSource event).

For more information about this can be available here.
Advanced Data-binding (using NeedDataSource event)

Hope this helps,
Princy.
0
Colm
Top achievements
Rank 1
answered on 11 Feb 2011, 10:01 PM
Well, it started working fine by itself without chaning to the Advanced Data Binding method!

I did change some other components of the grid, but nothing to do with how data is bound to it, and it started working fine now.
0
Kavitha
Top achievements
Rank 1
answered on 27 Mar 2012, 08:13 PM
Hi

Im also facing the same issue. Can you please tell me what exactly you have changed in grid component.

Thansk
Kavitha
Tags
Grid
Asked by
Colm
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Colm
Top achievements
Rank 1
Kavitha
Top achievements
Rank 1
Share this question
or