我想用僅有兩列的表格構建一個非常簡單的Kendo CRUD網格:ID和名稱。我已經使用服務器端分頁和服務器端過濾來配置網格。Kendo Grid不會在創建後使用新創建的ID更新網格
一切似乎都按預期工作,但創建新記錄後,網格顯示新記錄但沒有ID字段。在創建時,請求的ID爲空,但是我在創建後發送id和完整對象的值。在示例網格中,網格用新值更新。我需要更改/添加什麼來確保新創建記錄的ID在Grid中顯示?
以下是JSP:
<script>
$(function() {
var dataSource = new kendo.data.DataSource({
transport: {
read: {
url:"http://localhost:8181/baseweb/countrylist",
dataType: "jsonp"
},
update: {
url: "http://localhost:8181/baseweb/countryupdate",
dataType: "jsonp"
},
destroy: {
url: "http://localhost:8181/baseweb/countrydelete",
dataType: "jsonp"
},
create: {
url: "http://localhost:8181/baseweb/countrycreate",
dataType: "jsonp"
},
parameterMap: function(data, operation) {
if (operation !== "read" && data.models) {
return {grid_options: kendo.stringify(data.models)};
}
return {grid_options: kendo.stringify(data)};
}
},
serverPaging: true,
serverFiltering: true,
pageSize: 10,
schema: {
data: "data",
total: "total",
model: {
id: "id",
fields: {
id: { editable: false, nullable: true },
name: { validation: { required: true } }
}
}
}
});
$("#grid").kendoGrid({
dataSource: dataSource,
pageable: true,
filterable: true,
height: 400,
toolbar: ["create"],
columns: [
{ field: "id", title:"Identification"},
{ field: "name", title:"Country Name" },
{ command: ["edit", "destroy"], title: " ", width: "160px" }
],
editable: "popup"
});
});
</script>
參數傳送到服務器上創建: _ 1380846899054個 回調jQuery19108827040256333442_1380846899052 grid_options { 「ID」:空, 「名」: 「測試」}
參數從服務器發送回作爲應答: jQuery19108827040256333442_1380846899052([{ 「ID」: 「4028828f4180d64a014180e3bda20002」, 「名稱」: 「測試」}])
我希望服務器發回的ID應顯示在網格中。我已經搜索了這個論壇,Kendo文檔和谷歌的答案,但我無法找到解決方案。
我錯過了什麼?
更新與解決方案:
Jack's answer提供的線索,以尋找解決方案。我犯了兩個錯誤:
a。 Kendo Grid中的回調似乎期望數據回到「data:」屬性中。我在迴應中沒有將結果集命名爲「data:」。 b。該回調還期望data:屬性中的對象的JSONArray。因爲我只創建一個對象,所以我發送了一個JSONObject。
將包含data:屬性和JSONArray的響應更改爲完美后。 來自客戶端的請求參數如下:
_ 1386350196768
callback jQuery19101285024500179227_1386350196765
grid_options {"id":null,"name":"Ghana"}
修改後的迴應是這樣的:
jQuery19101285024500179227_1386350196765({"data":[{"id":"2c9323ca42c8df630142c944450b0002","name":"Ghana"}]})
希望它可以幫助別人,因爲這是不是官方文件中明確記載。
你有沒有想過這個?我遇到同樣的問題,我要返回的ID未在客戶端數據集中設置,因此將其留作「新」項。完成之後的所有操作(創建,更新,刪除)。 – Jack
你的答案幫助我找出解決方案。謝謝。我會發布我自己的答案,以確保它爲其他人正確記錄。 – sohail