我们正在使用剑道(2013.3.1119)&敲除(2.3)剑道UI电网未与asp.net网页API的OData服务使能正常工作
我们创建了远程的OData源非常简单的网格边界到的ASP.NET Web API
考虑以下代码:
$(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()用对象填充。
但是我们下面的问题:
$(元素)。数据( 'kendoGrid')pager.dataSource.data()是空的,所以我们的寻呼机不能正常工作。
那么我们的实现有什么问题?这是一个正确的配置?
起初,我们有一个问题,我们的OData的Web服务,这是目前管理的,你可以在这篇文章中看到的响应:
kendo Grid DataSource with OData format = json
感谢
版本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:
我改变了我的配置使用Kendo UI演示的以下WCF数据服务样本, http://demos.kendoui.com/service/Northwind.svc/Orders 但不幸的是,它并没有为我工作。
第4版:
我已经降级为kendo.all.min 2012.2.913,现在我的项目是工作的罚款与两台Web API &敲除(!)。
但我已经创造了另一个样本,与WCF数据服务,而不是网页API &没有淘汰赛
模板,它的正常工作与剑道(2013.3.1119)的最新版本(但我的项目外)
knockout或web api有问题吗?
第5版:
我搬到WCF数据服务的这是工作的罚款,我的项目样本。
它不工作!
为什么?寻呼机正在与旧版本,无论是在我的项目,我的项目之外,但
最新的版本是不是在我的项目工作,即使没有敲除和WCF,但最新的版本是
我的项目以外的工作。
现在该怎么办?
修订版6:随着删除kendo.dataViz.js,数据网格正在与ASP.NET Web API OData, 淘汰模板和分页。
在我的项目中,现在一切正常。
修订版7:我已经在jsfiddle上创建了一个非常简单的kendo网格,它是pager在dataViz被引用时不起作用。
但是,如果您删除dataViz参考,传呼机将正常工作。
http://jsfiddle.net/ysmoradi/8L9Pn/2/
注:请检查的jsfiddle对铬,和所有的CSS没有被引用,
所以它的用户界面是不是漂亮,而是将所有的CSS不会解决问题。
您可以添加'complete:function(jqXhr,textStatus){debugger; }'进入你的transport.read并检查浏览器调试工具中的两个变量,并告诉我你得到了什么? – Vojtiik
该配置看起来不错,你应该在你的数据源实现schema.model,我也会添加schema.parse暂时只是为了看看你回来的回应。我认为你没有收到正确的数据。 – Vojtiik
@Bobby_D_谢谢,我已经在Config中修复了一些新项目,并且我添加了更多关于响应的信息,请您再次检查一下吗? –