Javascript Kendo UI网格在启用asp.net web api odata的服务中无法正常工作

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',

我们使用剑道(2013.3.1119)和击倒(2.3)

我们创建了一个非常简单的网格,远程odata源绑定到ASP.NETWebAPI

考虑以下代码:

        $(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______________________________________________________。请你再看一下我的配置,告诉我你的想法好吗?