爲了能夠推送更新服務器端,您必須覆蓋_saveCustom()
或_saveEverything()
。這是我用來保存更新的一段代碼(稍微清理一下)。
請注意,下面的代碼依賴於專用的_getModifiedItems()
,因爲DataGrid接受內聯版本。如果您知道修改項目的列表(因爲該版本是在彈出窗口中完成的,並且將項目關鍵字保存在某處),則修改後的項目會更簡單。
module.submitUpdates = function() {
var store = <from a variable local to the module>
if (store.isDirty() confirm("Updates to be persisted. Continue?")) {
store._saveCustom = function(saveCompleteCallback, saveFailedCallback) {
var modifiedItem = _getModifiedItems(store)[0];
dojo.xhrPost({
headers: { "content-type": "application/json; charset=utf-8" },
content: dojo.toJson(modifiedItem),
handleAs: "json",
load: function(response) {
if (response !== null && response.success) {
saveCompleteCallback();
}
else {
saveFailedCallback(response);
}
},
error: saveFailedCallback,
url: "/API/<Object>"
});
};
store.save({
onComplete : function() {
module.loadCachingRuleList();
},
onError : function(errorData, request) {
_reportUpdateFailure(errorData, errMsg);
}
});
}
};
下面是我用它來獲取所有更新的項目時,用戶將失去一個更新的DataGrid中的代碼(因爲他離開頁面或者是因爲他想刷新格的內容)。
請注意,以下代碼使用了Dojo 1.3。我還沒有檢查Dojo 1.4是否更容易...我希望dojo.Stateful將在Dojo 1.5中引入,這將簡化它,否則我們將不得不等待Dojo 1。6)
var _getModifiedItems = function(store) {
var modifiedItems = [];
if (store !== null && store._pending !== null) {
if (store._pending._modifiedItems !== null) {
for (var modifiedItemKey in store._pending._modifiedItems) {
if (store._itemsByIdentity) {
modifiedItems.push(store._itemsByIdentity[modifiedItemKey]);
}
else {
modifiedItems.push(store._arrayOfAllItems[modifiedItemKey]);
}
}
}
if (store._pending._newItems !== null) {
for (var modifiedItemKey in store._pending._newItems) {
if (store._itemsByIdentity) {
modifiedItems.push(store._itemsByIdentity[modifiedItemKey]);
}
else {
modifiedItems.push(store._arrayOfAllItems[modifiedItemKey]);
}
}
}
}
return modifiedItems;
};
var _getDeletedItems = function(store) {
var deletedItems = [];
if (store !== null && store._pending !== null && store._pending._deletedItems !== null) {
for (var deletedItemKey in store._pending._deletedItems) {
if (store._itemsByIdentity) {
deletedItems.push(store._itemsByIdentity[deletedItemKey]);
}
else {
deletedItems.push(store._arrayOfAllItems[deletedItemKey]);
}
}
}
return deletedItems;
};
我希望這有助於 A +,大教堂
在這種情況下,「模塊」是什麼? – 2011-04-28 23:24:58
是什麼是模塊對象? – Sandeep 2012-08-16 10:08:36