2013-12-18 12 views
0

我们正在使用剑道(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不会解决问题。

+1

您可以添加'complete:function(jqXhr,textStatus){debugger; }'进入你的transport.read并检查浏览器调试工具中的两个变量,并告诉我你得到了什么? – Vojtiik

+0

该配置看起来不错,你应该在你的数据源实现schema.model,我也会添加schema.parse暂时只是为了看看你回来的回应。我认为你没有收到正确的数据。 – Vojtiik

+0

@Bobby_D_谢谢,我已经在Config中修复了一些新项目,并且我添加了更多关于响应的信息,请您再次检查一下吗? –

回答

0

如果你把kendo.web & kendo.gauge放在同一页面上,你可以看到这个错误和很多其他不明确的错误。 在这种情况下,您应该使用kendo.all而不是这些文件。

2

ASP.NET WebAPI的odata配置略有不同,需要进行一些微调 - 例如总计响应字段和数据字段。

剑道团队在以下GutHub公开回购上共享了一个工作示例。带有dataSource配置的索引页面可以找到here。 Conoller可用here

我希望这些信息可以解决您遇到的问题。

+0

谢谢,我验证了你提到的样本,并且确定了我的错误,但我没有为我工作。你能不能再看看我的配置,并告诉我你的想法? –