ItemFileWriteStore:如何更改数据?

时间:2010-05-20 14:25:03

标签: dojo

我想更改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持有的“项目”中的数据。

有人能指出我正确的方向吗?

由于 杰夫波特

3 个答案:

答案 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() '?