515
MVC Hierarchical grid - Load on demand - throwing Object reference error
posted

Hi,

I am trying to use a hierarchical grid using MVC 5. I am suppose to have three levels of data in the grid - parent , child and grand child.

I am able to bind the parent but not the child using Load on demand from the controller.

--Model
public class ParentViewModel
{
  public int PId {get; set;}
  public string Name {get; set;}
  public ICollection ChildDetails
}


Public class ChildViewModel
{
  public int CId {get; set;}
  public int PId {get; set;}
  public int CData {get; set;}
}

--View
@model Infragistics.Web.Mvc.GridModel

(Html.Infragistics().Grid(Model))

--Controller

private GridModel GetGridModel()
{  

            GridModel model = new GridModel();
            model.AutoGenerateColumns = false;
            model.AutoCommit = true;
            model.PrimaryKey = "PId";
            model.AutoGenerateLayouts = false;
            model.ID = "igGrid";

            model.LoadOnDemand = true;

            model.Columns.Add(new GridColumn { Key = "PId", Hidden = true, DataType = "number" });
            model.Columns.Add(new GridColumn { Key = "Name", HeaderText = "Parent Name ", DataType = "string" });
            model.DataSourceUrl = (Url.Action("BindParentDetails"));
           

            GridColumnLayoutModel childModel = new GridColumnLayoutModel();
            childModel.Key = "ChildDetails";
            childModel.PrimaryKey = "PID";
            childModel.ForeignKey = "CId";
            childModel.AutoGenerateColumns = false;
            childModel.Columns.Add(new GridColumn { Key = "CId", HeaderText = "Child ID", DataType = "number" });
            childModel.Columns.Add(new GridColumn { Key = "CData", HeaderText = "Child Data", DataType = "number" });
            childModel.DataSourceUrl = Url.Action("BindChildDetails");

            model.ColumnLayouts.Add(childModel);
            
            return model;
}


        public JsonResult BindParentDetails()
        {
            GridModel rModel = GetGridModel();

            var p = _service.GetPDetails();

            rModel.DataSource = p.AsQueryable();
            var res = rModel.GetData();
            return res;
        }

        public JsonResult BindChildDetails(string path, string layout)
        {
            var pid = path.Substring(path.LastIndexOf(':') + 1);


            GridModel grd = GetGridModel();

            var p = _service.GetChildDetails(pId);
            grd.DataSource = p.AsQueryable();
            var res = grd.GetData(path, layout);
            return res;
        }

When I run the solution it binds the parent grid correctly. On clicking the + icon it goes into BindChildDetails function and breaks on:

var res = grd.GetData(path, layout);

An exception of type 'System.NullReferenceException' occurred in Infragistics.Web.Mvc.dll but was not handled in user code

Additional information: Object reference not set to an instance of an object.

It has correct values in path and layout

grd.DataSource  is set correctly with the data from the DB.

The version of Infragistics.Web.Mvc we are using is 5.16.2.2040

Can anyone please help me with this?