I’m using ASP.NET CORE with Telerik Core UI. I am fetching data from an SQL server, and when I debug code, I see data made to the action method.
However, Grid doesn’t populate any data; I only see the headers, in developer mode, I see no errors thrown. Could you please let me know what I am doing wrong.
For Startup class, I have added appropriate reference
services.AddControllersWithViews()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
options.JsonSerializerOptions.PropertyNamingPolicy = null;
})
services.AddKendo();
Any help is much appreciated.
Model:
public class SampleModel
{
public int ASSAY_ID { get; set; }
public string ASSAY_REQUESTED { get; set; }
public string SAMPLE_NUMBER { get; set; }
public int ASSAY_NUMBER { get; set; }
}
Controler:
public ActionResult Index([DataSourceRequest] DataSourceRequest request)
{
SampleRepository samprp = new SampleRepository(_configuration);
var smp = samprp.GetSamples();
var queryable = smp.AsQueryable<SampleModel>();
DataSourceResult result = queryable.ToDataSourceResult(request,
c => new SampleModel
{
ASSAY_ID = c.ASSAY_ID,
ASSAY_REQUESTED = c.ASSAY_REQUESTED,
SAMPLE_NUMBER = c.SAMPLE_NUMBER,
ASSAY_NUMBER = c.ASSAY_NUMBER
});
return View(queryable);
}
View:
@using Kendo.Mvc.UI
@using Kendo.Mvc.Extensions
@(Html.Kendo().Grid<SCAssayApp.Models.SampleModel>()
.Name("grid")
.AutoBind(true)
.EnableCustomBinding(true)
.Columns(columns =>
{
columns.Bound(p => p.ASSAY_ID).Width(50);
columns.Bound(p => p.ASSAY_NUMBER).Width(60);
columns.Bound(p => p.SAMPLE_NUMBER).Width(70);
columns.Bound(p => p.ASSAY_REQUESTED).Width(100);
columns.Command(command => { command.Edit(); command.Destroy(); }).Width(172);
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.InLine))
.Scrollable()
.HtmlAttributes(new { style = "height:430px;" })
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Events(events => events.Error("error_handler"))
.Model(model =>
{
model.Id(p => p.ASSAY_ID);
model.Field(p => p.ASSAY_NUMBER);
model.Field(p => p.SAMPLE_NUMBER);
model.Field(p => p.ASSAY_REQUESTED);
}
)
.Read(read => read.Action("Index", "Sample"))
.ServerOperation(false)
)
However, Grid doesn’t populate any data; I only see the headers, in developer mode, I see no errors thrown. Could you please let me know what I am doing wrong.
For Startup class, I have added appropriate reference
services.AddControllersWithViews()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
options.JsonSerializerOptions.PropertyNamingPolicy = null;
})
services.AddKendo();
Any help is much appreciated.
Model:
public class SampleModel
{
public int ASSAY_ID { get; set; }
public string ASSAY_REQUESTED { get; set; }
public string SAMPLE_NUMBER { get; set; }
public int ASSAY_NUMBER { get; set; }
}
Controler:
public ActionResult Index([DataSourceRequest] DataSourceRequest request)
{
SampleRepository samprp = new SampleRepository(_configuration);
var smp = samprp.GetSamples();
var queryable = smp.AsQueryable<SampleModel>();
DataSourceResult result = queryable.ToDataSourceResult(request,
c => new SampleModel
{
ASSAY_ID = c.ASSAY_ID,
ASSAY_REQUESTED = c.ASSAY_REQUESTED,
SAMPLE_NUMBER = c.SAMPLE_NUMBER,
ASSAY_NUMBER = c.ASSAY_NUMBER
});
return View(queryable);
}
View:
@using Kendo.Mvc.UI
@using Kendo.Mvc.Extensions
@(Html.Kendo().Grid<SCAssayApp.Models.SampleModel>()
.Name("grid")
.AutoBind(true)
.EnableCustomBinding(true)
.Columns(columns =>
{
columns.Bound(p => p.ASSAY_ID).Width(50);
columns.Bound(p => p.ASSAY_NUMBER).Width(60);
columns.Bound(p => p.SAMPLE_NUMBER).Width(70);
columns.Bound(p => p.ASSAY_REQUESTED).Width(100);
columns.Command(command => { command.Edit(); command.Destroy(); }).Width(172);
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.InLine))
.Scrollable()
.HtmlAttributes(new { style = "height:430px;" })
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Events(events => events.Error("error_handler"))
.Model(model =>
{
model.Id(p => p.ASSAY_ID);
model.Field(p => p.ASSAY_NUMBER);
model.Field(p => p.SAMPLE_NUMBER);
model.Field(p => p.ASSAY_REQUESTED);
}
)
.Read(read => read.Action("Index", "Sample"))
.ServerOperation(false)
)