Exception of type 'System.OutOfMemoryException' was thrown.

2 posts, 0 answers
  1. Ravi
    Ravi avatar
    9 posts
    Member since:
    Jul 2014

    Posted 21 Jun Link to this post

    when i bind grid without  ItemDataBound it bind fine. But when i use it , then it show the Exception of type 'System.OutOfMemoryException' was thrown. error.

    Here is my code

       protected void griddetails_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
            {
                if (e.Item is GridDataItem)
                {
                    griddetails.MasterTableView.RenderColumns[4].Display = false;
                    griddetails.MasterTableView.RenderColumns[5].Display = false;
                    griddetails.MasterTableView.RenderColumns[6].Display = false;
                    griddetails.MasterTableView.RenderColumns[7].Display = false;

                    griddetails.MasterTableView.RenderColumns[10].Display = false;
                    griddetails.MasterTableView.RenderColumns[11].Display = false;
                    griddetails.MasterTableView.RenderColumns[26].Display = false;
                    griddetails.MasterTableView.RenderColumns[30].Display = false;
                    griddetails.MasterTableView.RenderColumns[31].Display = false;
                    griddetails.MasterTableView.RenderColumns[32].Display = false;

                    //if (e.Item.RowIndex > -1)                                       // i comment this part but still not working
                    //{
                    RadComboBox ddlMT = new RadComboBox();
                    ddlMT.ID = "ddlMT";
                       
                    ddlMT.Filter = RadComboBoxFilter.Contains;
                    ddlMT.DataSource = Bll.Bal_BindAllEmployeewithRole("ALL", Session["MTUseId"], e.Item.Cells[4].Text, e.Item.Cells[5].Text, "MT", null, null);
                    ddlMT.DataTextField = "EmployeeName";
                    ddlMT.DataValueField = "Empid";
                    ddlMT.DataBind();
                    e.Item.Cells[20].Controls.Add(ddlMT);

                    RadComboBox ddlQA = new RadComboBox();
                    ddlQA.ID = "ddlQA";
                       
                    ddlQA.Filter = RadComboBoxFilter.Contains;
                    ddlQA.DataSource = Bll.Bal_BindAllEmployeewithRole("ALL", Session["MTUseId"], e.Item.Cells[4].Text, e.Item.Cells[5].Text, "QA", null, null);
                    ddlQA.DataTextField = "EmployeeName";
                    ddlQA.DataValueField = "Empid";
                    ddlQA.DataBind();
                    e.Item.Cells[21].Controls.Add(ddlQA);

                    RadComboBox ddlMT2 = new RadComboBox();
                    ddlMT2.ID = "ddlMT2";
                      
                    ddlMT2.Filter = RadComboBoxFilter.Contains;
                    ddlMT2.DataSource = Bll.Bal_BindAllEmployeewithRole("ALL", Session["MTUseId"], e.Item.Cells[4].Text, e.Item.Cells[5].Text, "MT2", null, null);
                    ddlMT2.DataTextField = "EmployeeName";
                    ddlMT2.DataValueField = "Empid";
                    ddlMT2.DataBind();
                    e.Item.Cells[22].Controls.Add(ddlMT2);

                    RadComboBox ddlQA2 = new RadComboBox();
                    ddlQA2.ID = "ddlQA2";
                      
                    ddlQA2.Filter = RadComboBoxFilter.Contains;
                    ddlQA2.DataSource = Bll.Bal_BindAllEmployeewithRole("ALL", Session["MTUseId"], e.Item.Cells[4].Text, e.Item.Cells[5].Text, "QA2", null, null);
                    ddlQA2.DataTextField = "EmployeeName";
                    ddlQA2.DataValueField = "Empid";
                    ddlQA2.DataBind();
                    e.Item.Cells[23].Controls.Add(ddlQA2);

                    RadComboBox ddlQC = new RadComboBox();
                    ddlQC.ID = "ddlQC";
                      
                    ddlQC.Filter = RadComboBoxFilter.Contains;
                    ddlQC.DataSource = Bll.Bal_BindAllEmployeewithRole("ALL", Session["MTUseId"], e.Item.Cells[4].Text, e.Item.Cells[5].Text, "QC", null, null);
                    ddlQC.DataTextField = "EmployeeName";
                    ddlQC.DataValueField = "Empid";
                    ddlQC.DataBind();
                    e.Item.Cells[24].Controls.Add(ddlQC);

                   
                }
                //}
            }
       
    I think i am creating the control dynamic here it may be due to this. This code bind upto 971 records but after that it show error.

    if there is another way to create it, tell me. I want to bind thru it server side not clientside bcoz it can't fullfill my need.

  2. Eyup
    Admin
    Eyup avatar
    3007 posts

    Posted 24 Jun Link to this post

    Hi Ravi,

    The ItemDataBound event is raised for every grid item, therefore, it is not suitable for such logic. Please define your entire grid during Page_Init and create ItemTemplates programmatically:
    http://docs.telerik.com/devtools/aspnet-ajax/controls/grid/defining-structure/creating-a-radgrid-programmatically#creating-template-columns-programmatically

    For improving the overall performance with grid templates, you can check the explanation provided in the following post:
    http://www.telerik.com/forums/radgrid-becomes-too-slow-when-binding-over-100-records#qxa2LUwVA0WYQpqmpwjrTg


    I hope this will prove helpful.

    Regards,
    Eyup
    Telerik
    Do you need help with upgrading your ASP.NET AJAX, WPF or WinForms projects? Check the Telerik API Analyzer and share your thoughts.
  3. UI for ASP.NET Ajax is Ready for VS 2017
Back to Top