Javascript Kendo UI网格在启用asp.net web api odata的服务中无法正常工作
我们使用剑道(2013.3.1119)和击倒(2.3) 我们创建了一个非常简单的网格,远程odata源绑定到ASP.NETWebAPI 考虑以下代码:Javascript Kendo UI网格在启用asp.net web api odata的服务中无法正常工作,javascript,knockout.js,asp.net-web-api,kendo-ui,odata,Javascript,Knockout.js,Asp.net Web Api,Kendo Ui,Odata,我们使用剑道(2013.3.1119)和击倒(2.3) 我们创建了一个非常简单的网格,远程odata源绑定到ASP.NETWebAPI 考虑以下代码: $(element).kendoGrid({ dataSource: { type: 'odata', transport: { read: { url: '/odata/VehicleGroups',
$(element).kendoGrid({
dataSource: {
type: 'odata',
transport: {
read: { url: '/odata/VehicleGroups', dataType: 'json' }
},
schema: {
data: function(response) {
return response.value;
},
total: function (response) {
return response['odata.count'];
}
},
serverSorting: true,
serverPaging: true,
serverFiltering: true
},
dataBound: function () {
// we'are using knockout templates instead of kendo templates,
// so after data load & after all row templates are created, we call following code to apply bindings.
ko.memoization.unmemoizeDomNodeAndDescendants(element);
},
autoBind: true,
rowTemplate: function (item) {
// some codes are omitted here.
// following code will use knockout template.
return ko.renderTemplate('rowTemplate', context.createChildContext(item));
},
toolbar: function () {
return ko.renderTemplate('toolbar', context);
},
pageable: {
pageSize: 10
},
sortable: true,
resizable: true,
reorderable: false,
columns: [{ field: 'dVehicle_01', title: 'Unit/Vehicle Number' },
{ field: 'dVehicle_02', title: 'Vehicle Identification Number' },
{ field: 'dVehicle_04', title: 'Vehicle Type' },
{ field: '', title: 'Actions' }]
});
以下各项工作正常:
1-创建网格
2-发送$inlineCount=allpages且take=10的第一个查询
3-收到响应并生成行模板并显示数据
4-用对象填充$(element).data('kendoGrid').dataSource.data()
但我们有以下问题:
$(element).data('kendoGrid').pager.dataSource.data()为空,因此我们的寻呼机无法正常工作。
那么,我们的实现有什么问题?这是正确的配置吗
起初,我们对OData web服务的响应有一个问题,您可以在本文中看到,OData web服务现在已被管理:
谢谢
Rev 2:根据请求,我添加了以下关于网格请求响应的信息:
textStatus: "success"
jqXhr.statusText: "OK"
jqXhr.responseJSON:
odata.count: "29"
odata.metadata: "http://localhost:2452/odata/$metadata#VehicleGroups"
value: Array[10]
jqXhr.getAllResponseHeaders():
"Pragma: no-cache
Date: Sat, 21 Dec 2013 07:20:00 GMT
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Type: application/json; charset=utf-8
Cache-Control: no-cache
DataServiceVersion: 3.0
Content-Length: 7192
Expires: -1"
jqXhr.state(): "resolved"
jqXhr.responseText:
"{
"odata.metadata":"http://localhost:2452/odata/$metadata#VehicleGroups","odata.count":"29","value":[
{
"YearGroup":[
],"Id":"fdd6a5e0-6587-11e3-978d-2797cb4c371a","Version":"122","DateOfArchive":"2013-12-15T12:54:49.0503312Z","IsArchived":false,"ISV":true,"CreatedBy":"ae5882fb-b833-46d7-9f58-0505ec2a6f8f","CreatedTime":"2013-12-15T12:54:49.0973461Z","LastModifiedTime":"2013-12-15T12:54:49.0973461Z","LastModifiedBy":"ae5882fb-b833-46d7-9f58-0505ec2a6f8f", ...
第3版:
我更改了配置以使用以下剑道UI演示的WCF数据服务示例,
但不幸的是,这对我不起作用
第4版:
我已经降级到kendo.all.min 2012.2.913,我的项目现在在Web API和knockout中都运行良好(!)
但是我创建了另一个示例,使用WCF数据服务而不是webapi&没有敲除
模板,它与最新版本的剑道(2013.3.1119)配合良好(但不在我的项目范围内)
敲除或web api有什么问题吗
第5版:
我已经移动了WCF数据服务的示例,它在我的项目中运行良好
它不起作用了
为什么?Pager正在使用旧版本,无论是在我的项目中还是在我的项目之外,但是
最新版本在我的项目中不起作用,即使没有敲除和WCF,但最新版本是
在我的项目之外工作
我现在该怎么办
第6版:删除kendo.dataViz.js后,data grid将使用ASP.NET Web API OData,
淘汰模板和分页
我的项目现在一切正常。
Rev 7:我在JSFIDLE上创建了一个非常简单的剑道网格,当引用dataViz时,它的分页器不工作
但如果删除dataViz引用,寻呼机将正常工作
注意:请检查chrome上的JSFIDLE和所有css是否未被引用
因此,它的ui并不美观,但添加所有css并不能解决问题。ASP.NET WebAPI的odata配置略有不同,需要进行一些微调,例如响应的总计字段和数据字段 剑道团队分享了以下公开回购的工作示例。可以找到带有数据源配置的索引页。Conoller可用
我希望这些信息能解决您所面临的问题。如果您将kendo.web和kendo.gauge放在同一页面上,您可以看到此错误和许多其他不清楚的错误。
在这种情况下,您应该使用kendo.all而不是那些文件。能否将
complete:function(jqXhr,textStatus){debugger;}
添加到您的transport.read中,并在浏览器调试工具中检查这两个变量,然后告诉我您得到了什么?配置看起来没有那么糟糕,您应该在数据源中实现schema.model,我还想暂时添加schema.parse,看看您得到了什么样的响应。我想你没有得到正确的数据。@Bobby_D______________________________________________________。请你再看一下我的配置,告诉我你的想法好吗?