【发布时间】:2017-05-16 18:52:26
【问题描述】:
我无法在剑道网格中显示从控制器返回的数据作为 Json 结果。
[HttpPost]
public ActionResult PermitSearch(BptSearchViewModel viewModel)
{
var data = appService.SearchPermitInspection(viewModel);
return Json(data);
}
现在从我的角度来看,我正在使用 ajax 提交信息
@using (Ajax.BeginForm("PermitSearch", "Home", null, new AjaxOptions
{
HttpMethod = "post",
InsertionMode = InsertionMode.InsertAfter,
UpdateTargetId = "search-results-grid",
OnComplete = "OnCompleteMethod"
}))
{
....
}
<div id="search-results-grid"></div>
下面是带有 OnCompleteMethod 的脚本
function OnCompleteMethod(dataq, status) {
if (status === "success") {
$("#search-results-grid").kendoGrid({
columns: [
{
field: "jobname",
title: "Job Type"
},
dataSource: {
data: {
"items" : dataq
},
schema: {
data: "items"
}
},
groupable: true,
sortable: true,
pageable: {
refresh: true,
pageSizes: true,
buttonCount: 5
},
noRecords: {
template: "No data available on current page. Current page is: #=this.dataSource.page()#"
}
});
}
}
调用控制器后返回的数据如下所示
[
{
"jobname": "job1"
},
{
"jobname": "job2"
}
]
我看到的有效示例是使用数组中不带引号的对象的键,就像这样,但我找不到任何可以应用的转换来将 json 数据传递到其中的网格方式。
[
{
jobname: "job1"
},
{
jobname: "job2"
}
]
你可以在这里看到浏览器的响应
【问题讨论】:
-
进入
OnCompleteMethod函数时dataq和status包含什么? -
您已定义架构以在名为“items”的属性中查找数据,但我不认为这是 JSON 示例中的属性,尝试返回一个名为“items”的数组,它应该绑定。
-
@StephenByrne 我尝试了您的方法,但仍然无法正常工作,如果我将我在响应中看到的数据直接复制并粘贴为脚本的一部分,我可以看到其中的元素,但是当我更新我的问题时,作为函数的参数传递似乎采用不同的格式,但奇怪的是,即使在脚本中粘贴带有双引号的代码似乎也可以,对此有什么帮助吗?跨度>
-
@Heinrich - 你可以尝试将
dataSource: {data: { "items" : dataq}},更改为dataSource: {data: dataq}因为iirc,当你使用这样的dataSource 时,没有“items”属性,你只需将数据数组直接放入进入“数据”属性。
标签: kendo-ui kendo-grid kendo-asp.net-mvc