在我的kendo.grid上显示数据有点困难。
json是有效的,它在单击链接时显示为文本,但在网格中加载数据。
这里是来源,任何帮助将不胜感激!
BR。埃罗
控制器
public ActionResult Index([DataSourceRequest]DataSourceRequest request)
{
using (var db = new CimDataContext())
{
IQueryable<Customer> customers = db.Customers;
DataSourceResult result = customers.ToDataSourceResult(request);
return Json(result, "text/x-json", JsonRequestBehavior.AllowGet);
}
}
index.cshtml索引
@(Html.Kendo().Grid<KendoUIMvcCim.Models.Customer>()
.Name("grid")
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("Index", "Customer"))
)
.Columns(columns =>
{
columns.Bound(customer => customer.Id);
columns.Bound(customer => customer.Name);
columns.Bound(customer => customer.Number);
columns.Bound(customer => customer.AgentID);
columns.Bound(customer => customer.Info);
columns.Bound(customer => customer.Email);
columns.Bound(customer => customer.StartTime);
columns.Bound(customer => customer.EndTime);
columns.Bound(customer => customer.Category);
})
.Pageable()
.Sortable()
)
浏览器上的结果
{"Data":[{"Id":2,"Name":"Name1","Number":"040000000","AgentID":"1","Info":"info1","Email":"email1","StartTime":"\/Date(1360101600000)\/","EndTime":null,"Category":"Laser"},{"Id":3,"Name":"Name2","Number":"0400000000","AgentID":"2","Info":"info2","Email":"email2","StartTime":"\/Date(1360188000000)\/","EndTime":null,"Category":"Kaihi"}],"Total":2,"AggregateResults":null,"Errors":null}
最佳答案
我认为问题在于,您的action方法返回一个json字符串,而您的视图需要一个KendoUIMvcCim.Models.Customer
列表。在控制器中使用两种不同的操作方法来解决此问题:
第一个操作返回一个viewResult,它是视图所必需的
public ViewResult Index()
{
using (var db = new CimDataContext())
{
IQueryable<Customer> customers = db.Customers;
return View(customers);
}
}
第二个操作返回actionresult,网格需要它通过ajax调用填充它。
public ActionResult Customers_Read([DataSourceRequest]DataSourceRequest request)
{
using (var db = new CimDataContext())
{
IQueryable<Customer> customers = db.Customers;
DataSourceResult result = customers.ToDataSourceResult(request);
return Json(result, "text/x-json", JsonRequestBehavior.AllowGet);
}
}
在index.cshtml文件中,您最终需要更改
.Read
行,以便在控制器中调用正确的操作方法。 .DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("Customers_Read", "Customer"))
)