2013-12-18 11 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

謝謝,我驗證了你提到的樣本,並且確定了我的錯誤,但我沒有爲我工作。你能不能再看看我的配置,並告訴我你的想法? –