我想更改dojo.data.ItemFileWriteStore中的数据。
目前我有......
var rawdataCacheItems = [{'cachereq':'14:52:03','name':'Test1','cacheID':'3','ver':'7'}];
var cacheInfo = new dojo.data.ItemFileWriteStore({
data: {
identifier: 'cacheID',
label: 'cacheID',
items: rawdataCacheItems
}
});
我想发出一个XHR请求来获取要呈现的数据的新JSON字符串。
我无法解决的是如何更改ItemFileWriteStore持有的“项目”中的数据。
有人能指出我正确的方向吗?
由于 杰夫波特
答案 0 :(得分:4)
您可以使用dojo.data.api.Write
API提供的功能来修改商店中的商品。
例如,您可以使用newItem
在商店中创建新商品,使用deleteItem
删除商店中的商品,然后使用setValue
更新现有商品的属性
答案 1 :(得分:1)
我将给Alex Cheng +1,因为他的信息引导我解决方案。
这就是我解决问题的方法..
我的JSONExtractor类......
private String setupCacheTabData()
{
JSONArray jsonList = new JSONArray();
List<IDataDelivery> cacheDeliveryRecords = service.getCacheDeliveryRecords();
for (IDataDelivery cache : cacheDeliveryRecords)
{
JSONObject jsonO = new JSONObject();
try
{
jsonO.put("cacheID", cache.getCacheID());
jsonO.put("cacheversion", cache.getVersion());
jsonList.put(jsonO);
}
catch (Exception e)
{
log.error("Error decoding CACHE database row for JSON (WILL SKIP): CACH_ID=" + cache.getCacheID(), e);
}
}
return jsonList.toString().replace("\"", "'");
}
我的Javascrip代码......
var cacheInfo;
var rawdataCacheInfo = <s:property value='%{cacheString}'/>;
cacheInfo = new dojo.data.ItemFileWriteStore({
data: {
identifier: 'cacheId',
label: 'cacheId',
items: rawdataCacheInfo
}
});
function do() {
var xhrArgs = {
url: "../secure/jsonServlet?class=JSONExtractor&startDate="+startDateValue+"&startTime="+startTimeValue,
handleAs: "json",
preventCache: true,
load: function(data) {
// remove items...
var allData = cacheInfo._arrayOfAllItems;
for (i=0;i<allData.length;i++) {
if (allData[i] != null) {
cacheInfo.deleteItem(allData[i]);
}
}
// save removal of items.
ddInfo.save();
// add new items
for (i=0;i<data.length;i++) {
cacheInfo.newItem(data[i]);
}
},
error: function(error) {
}
}
}
答案 2 :(得分:0)
@Jeff Porter
在您的代码中,您说“ ddInfo.save(); ”
我没有看到任何用该名称实例化的变量。
您的意思是' cacheInfo.save() '?