我們正在使用劍道(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中修復了一些新項目,並且我添加了更多關於響應的信息,請您再次檢查一下嗎? –