Exception: 'System.OutOfMemoryException' was thrown when there is 5000+ data need to be bind in RadComboBox inside RadGrid

2 posts, 0 answers
  1. Priyanka
    Priyanka avatar
    34 posts
    Member since:
    Dec 2014

    Posted 09 Aug 2015 Link to this post

    I have a RadGrid and a RadComboBox outside of RadGrid (say comboOutside), inside a Web Form.
    Inside RadGrid, there is 1 more RadComboBox (say comboRadGrid). On selection of items from comboOutside, comboRadGrid is bind i.e., If item 'Company' is selected from comboOutside, then all the company names will be bind in comboRadGrid; and then user select specific company from comboRadGrid and records are added in RadGrid.

    For all items, functionality is working fine but I am facing issue in binding of a specific comboOutside item. i.e., When I choose a specific item from comboOutside, say I have 100 items inside comboOutside, and when I select 35th items from it, then comboRadGrid always throw this error while binding records for 35th item (since 35th item has 2000+ records to bind in comboRadGrid)
    Error is attached below: 
    Funcitonality is working fine for all the items except 1 specific item of RadComboBox. I don't understand why. Due to this I am unable to add records in RadGrid
    Below is my code- 

    C# code​​

    public DataTable GetAccCode(string CompanyCode)
        {
            SqlConnection con = new SqlConnection(strcon);
            SqlCommand cmd = new SqlCommand("[Invoice].[usp_tbl_AccountCode_DL_Test]", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@CompanyCode", CompanyCode);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            try
            {
                con.Open();
                da.Fill(dt);
                con.Close();
            }
            catch (Exception ex)
            {
            }
            return dt;
        }
    protected void RGGSTAcCode_ItemDataBound(object sender, GridItemEventArgs e)
        {
            if (e.Item is GridEditableItem && e.Item.IsInEditMode)
            {
                //bind dropdwon while "Add"
                string CompanyCode = ddlCompany.SelectedValue.ToString();
                GridEditableItem item = (GridEditableItem)e.Item;
      
                //code to bind inside RadComboBox list 
                RadComboBox rcb = (RadComboBox)item.FindControl("ddlAccountCode");
                rcb.DataSource = GetAccCode(CompanyCode);
                rcb.DataTextField = "AccountDescription";
                rcb.DataValueField = "AccountCodeID";
                rcb.DataBind();
                rcb.Items.Insert(0, new RadComboBoxItem("- Select -", string.Empty));
      
                Session["AccCode"] = rcb.SelectedValue.ToString();
                string a = rcb.SelectedValue.ToString();
      
                //Select particular dropdown value while "Edit"
                Label lblAcCode2 = item.FindControl("lblAcCode2") as Label;
                if (!string.IsNullOrEmpty(lblAcCode2.Text))
                {
                    rcb.SelectedValue = lblAcCode2.Text;
                    rcb.SelectedItem.Text = lblAcCode2.Text;
                }
            }
        }
         //code to bind outside RadComboBox list
            protected void BindComapnyDL()
            {
                SqlConnection con = new SqlConnection(strcon);
                SqlCommand cmd = new SqlCommand("General.usp_tbl_BuyerCode_Query", con);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                try
                {
                    con.Open();
                    da.Fill(dt);
                    con.Close();
                }
                catch (Exception ex)
                {
                }
      
                ddlCompany.DataTextField = "Title";
                ddlCompany.DataValueField = "Code";
                ddlCompany.DataSource = dt;
                ddlCompany.DataBind();
      
                Session["Comp"] = ddlCompany.SelectedValue.ToString();
                string a = ddlCompany.SelectedValue.ToString();    
            }
      
            //RadComboBox select index changed event
            protected void ddlCompany_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
            {
                if (ddlCompany.SelectedValue == null || ddlCompany.SelectedValue == "")
                {
                    GridCommandItem cmditem = (GridCommandItem)RGGSTAcCode.MasterTableView.GetItems(GridItemType.CommandItem)[0];
                    System.Web.UI.WebControls.Button ctrl = (System.Web.UI.WebControls.Button)cmditem.FindControl("AddNewRecordButton");
                    ctrl.Enabled = false;
      
                    System.Web.UI.WebControls.LinkButton btn = (System.Web.UI.WebControls.LinkButton)cmditem.FindControl("InitInsertButton");
                    btn.Enabled = false;
      
                    string content = "Please select company first";
                    ScriptManager.RegisterStartupScript(this, typeof(string), "Successful", "alert('" + content + "');", true);
                }
                else
                {
                    RGGSTAcCode.Rebind();
                }
            }

    HTML Code: 

    <telerik:RadComboBox ID="ddlCompany" runat="server" Height="200" Width="240"
              DropDownWidth="310" EmptyMessage="- Select Product -" HighlightTemplatedItems="true" CausesValidation="false"
              Filter="Contains" AppendDataBoundItems="true" AllowCustomText="true" AutoPostBack="true"
              DataTextField="Title" DataValueField="Code" OnSelectedIndexChanged="ddlCompany_SelectedIndexChanged">
            </telerik:RadComboBox>
      
    <telerik:RadGrid ID="RGGSTAcCode" runat="server"
                       ShowFooter="True" GroupingEnabled="False" ShowStatusBar="true" EmptyDataText="No record available."
                       AllowAutomaticInserts="False" AllowAutomaticUpdates="False" AllowAutomaticDeletes="true"
                       OnNeedDataSource="RGGSTAcCode_NeedDataSource" OnItemDataBound="RGGSTAcCode_ItemDataBound"
                       OnInsertCommand="RGGSTAcCode_InsertCommand" OnDeleteCommand="RGGSTAcCode_DeleteCommand"
                       OnUpdateCommand="RGGSTAcCode_UpdateCommand" OnItemCommand="RGGSTAcCode_ItemCommand">
                      <mastertableview ShowHeadersWhenNoRecords="true" autogeneratecolumns="false" datakeynames="AccountCodeID" InsertItemDisplay="Top"
                        insertitempageindexaction="ShowItemOnCurrentPage" ShowFooter="True" CommandItemDisplay="Top" ClientIDMode="Static">                                 
                             <Columns>
                                 <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn"></telerik:GridEditCommandColumn>
      
                                 <telerik:GridTemplateColumn UniqueName="AccountCode" HeaderText="Account Code">
                                    <ItemTemplate>
                                      <asp:Label ID="lblAcCode" runat="server" Text='<%# Eval("AccountCode")%>'></asp:Label>
                                    </ItemTemplate>
                                    <EditItemTemplate>
                                       <asp:Label ID="lblAcCode2" runat="server" Text='<%# Eval("AccountCode") + " - " + Eval("AccountDescription")%>' Visible="false"></asp:Label>
      
                                       <telerik:RadComboBox ID="ddlAccountCode" runat="server" Height="200" Width="240"
                                           DropDownWidth="310" HighlightTemplatedItems="true" CausesValidation="true"
                                           Filter="Contains" AppendDataBoundItems="true" DataTextField="AccountDescription" DataValueField="AccountCodeID">
                                       </telerik:RadComboBox>
                                    </EditItemTemplate>
                                 </telerik:GridTemplateColumn>
      
                                 <telerik:GridBoundColumn DataField="AccountDescription" HeaderText="Description" UniqueName="AccountDescription" SortExpression="AccountDescription" InsertVisiblityMode="AlwaysHidden" ReadOnly="true" ></telerik:GridBoundColumn>
                                 <telerik:GridBoundColumn aggregate="SUM" DataField="Amount" HeaderText="Amount" FooterAggregateFormatString="Total : {0:###,##0.00}" DataFormatString="{0:n}" FooterStyle-BackColor="#ffc04c" UniqueName="Amount" SortExpression="Amount"></telerik:GridBoundColumn>
                                 <telerik:GridBoundColumn DataField="Remark" HeaderText="IFCA Remark" UniqueName="Remark" SortExpression="Remark">
      
                                 </telerik:GridBoundColumn>  
      
                                 <telerik:GridButtonColumn ConfirmTextFormatString="Are you sure you want to Delete {0} Account Code?" ConfirmTextFields="AccountCodeID"
                                 ConfirmDialogType="RadWindow" CommandName="Delete" Text="Delete" UniqueName="DeleteColumn"></telerik:GridButtonColumn>                                                                          
                          </Columns>
                          <EditFormSettings>
                             <EditColumn ButtonType="ImageButton" />
                          </EditFormSettings>
                          <CommandItemSettings AddNewRecordText="Add new record" RefreshText="Refresh"></CommandItemSettings>
                      </mastertableview>
                    </telerik:RadGrid>

     Please let me know how to resolve. What shall I change in my code.
    I have to populate/bind the RadComboBox (comboRadGrid) which is inside of RadGrid, based on the Items that are outside of RadGrid of RadComboBox (comboOutside). Please note that I am very new in Telerik and asp.net Please let me know how to modify my comboRadGrid binding code (based on outside Combo List items) so that this issue do not occur again ? Please reply​

     

     

  2. Eyup
    Admin
    Eyup avatar
    3005 posts

    Posted 12 Aug 2015 Link to this post

    Hi Priyanka,

    I've already replied to your query in the following forum post:
    http://www.telerik.com/forums/exception-%27system-outofmemoryexception%27-was-thrown-when-there-is-2000-data-need-to-be-bind-in-radcombobox-inside-radgrid#cufYV8_LuUGg6sVLZI4Ycw

    I suggest that we continue our conversation on the mentioned thread.

    Regards,
    Eyup
    Telerik
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
  3. UI for ASP.NET Ajax is Ready for VS 2017
Back to Top