telerik asp.net 核心网格不显示返回的数据
telerik asp.net core grid not displaying returned data
这应该是一个简单的解决方案,但我已经折腾了2个小时。
我在这里定义了一个 telerik 网格:
@(Html.Kendo().Grid<Models.LOB.RebateAssignedUpc>
().Name("gridCustomers")
.Columns(c =>
{
c.Bound(e => e.Id).Title("Id");
c.Bound(e => e.Upc).Title("UPC");
})
.Groupable()
.DataSource(source =>
{
source.Custom()
.Transport(transport =>
{
transport.Read("GetUPCs", "Upc2");
});
})
)
它正在调用控制器中的这个方法,我已经验证它被调用并正在获取数据:
public ActionResult GetUPCs()
{
List<RebateAssignedUpc> upcDetails = db.RebateAssignedUpc.ToList();
var result = db.RebateAssignedUpc.Select(x => new
{
x.Id,
x.Upc
}).ToList();
var output = JsonConvert.SerializeObject(result);
return Json(output);
}
网格显示但没有数据,它确实有列并且正在显示按部分分组。
在控制器中使用断点,输出显示:
"[{\"Id\":1,\"Upc\":\"12345\"},{\"Id\":2,\"Upc\":\" 12346\"},{\"Id\":5,\"Upc\":\"12345\"}]"
我使用 f12 验证控制器正在将此数据返回给浏览器:
"[{\"Id\":1,\"Upc\":\"12345\"},{\"Id\":2,\"Upc\":\" 12346\"},{\"Id\":5,\"Upc\":\"12345\"}]"
我也试过手动这样做:
List<RebateAssignedUpc> upc = new List<RebateAssignedUpc>{
new RebateAssignedUpc{Id = 1, Upc = "1234"}
};
string jsonString = JsonConvert.SerializeObject(upc);
return Json(jsonString);
我一开始定义的grid有误,还需要提供Schema数据
@(Html.Kendo().Grid<WebPortal.Controllers.upcReturnData>().Name("gridCustomers")
.Columns(
c =>
{
c.Bound(e => e.upc).Title("UPC");
})
.Scrollable()
.Resizable(resize => resize.Columns(true))
.DataSource(source =>
{
source.Custom()
.Transport(transport =>
{
transport.Read("GetUPCs", "upc2");
}).Schema(schema =>
{
schema.Data("dataReturned");
});
})
定义网格时使用的控制器和upcReturnedData的部分class:
public ActionResult GetUPCs()
{
// List<upcReturnData> upcDetails = db.RebateAssignedUpc.ToList();
var result = db.RebateAssignedUpc.Select(x => new
{
id= x.Id,
upc=x.Upc
}).ToList();
return Json( new { dataReturned = result });
}
public partial class upcReturnData
{
public int id { get; set; }
public string upc { get; set; }
}
这应该是一个简单的解决方案,但我已经折腾了2个小时。
我在这里定义了一个 telerik 网格:
@(Html.Kendo().Grid<Models.LOB.RebateAssignedUpc>
().Name("gridCustomers")
.Columns(c =>
{
c.Bound(e => e.Id).Title("Id");
c.Bound(e => e.Upc).Title("UPC");
})
.Groupable()
.DataSource(source =>
{
source.Custom()
.Transport(transport =>
{
transport.Read("GetUPCs", "Upc2");
});
})
)
它正在调用控制器中的这个方法,我已经验证它被调用并正在获取数据:
public ActionResult GetUPCs()
{
List<RebateAssignedUpc> upcDetails = db.RebateAssignedUpc.ToList();
var result = db.RebateAssignedUpc.Select(x => new
{
x.Id,
x.Upc
}).ToList();
var output = JsonConvert.SerializeObject(result);
return Json(output);
}
网格显示但没有数据,它确实有列并且正在显示按部分分组。 在控制器中使用断点,输出显示:
"[{\"Id\":1,\"Upc\":\"12345\"},{\"Id\":2,\"Upc\":\" 12346\"},{\"Id\":5,\"Upc\":\"12345\"}]"
我使用 f12 验证控制器正在将此数据返回给浏览器:
"[{\"Id\":1,\"Upc\":\"12345\"},{\"Id\":2,\"Upc\":\" 12346\"},{\"Id\":5,\"Upc\":\"12345\"}]"
我也试过手动这样做:
List<RebateAssignedUpc> upc = new List<RebateAssignedUpc>{
new RebateAssignedUpc{Id = 1, Upc = "1234"}
};
string jsonString = JsonConvert.SerializeObject(upc);
return Json(jsonString);
我一开始定义的grid有误,还需要提供Schema数据
@(Html.Kendo().Grid<WebPortal.Controllers.upcReturnData>().Name("gridCustomers")
.Columns(
c =>
{
c.Bound(e => e.upc).Title("UPC");
})
.Scrollable()
.Resizable(resize => resize.Columns(true))
.DataSource(source =>
{
source.Custom()
.Transport(transport =>
{
transport.Read("GetUPCs", "upc2");
}).Schema(schema =>
{
schema.Data("dataReturned");
});
})
定义网格时使用的控制器和upcReturnedData的部分class:
public ActionResult GetUPCs()
{
// List<upcReturnData> upcDetails = db.RebateAssignedUpc.ToList();
var result = db.RebateAssignedUpc.Select(x => new
{
id= x.Id,
upc=x.Upc
}).ToList();
return Json( new { dataReturned = result });
}
public partial class upcReturnData
{
public int id { get; set; }
public string upc { get; set; }
}