extjs TreeStore代理与动态更新api

时间:2013-04-22 19:43:28

标签: ajax json tree extjs4

从我的扩展Ext.data.TreeStore:

proxy: {
    type: 'ajax',
    api: {
        read: "/GetTree.json",
        update: "/SetTree.aspx?username=user1"
    },
    reader: {
        type: 'json',
        root: 'children'
    },
    listeners: {
        exception: function (proxy, response, options) {
            // error case
            console.log('Exception in Portlets store proxy...');
            console.log(response);
        }
    }
},

我想弄清楚的是如何使username=user1动态化,以便我可以传入user2并使用该用户数据进行aspx页面处理。

我无法弄清楚TreeStore.sync()是否允许将参数传递给它。

更新

我在此之后真正能够将整个树结构保存为JSON字符串,而不仅仅是更新的记录。我可以构建我需要传递的JSON字符串,但无法弄清楚如何将这些信息实际传递到我的SetTree.aspx页面。

2 个答案:

答案 0 :(得分:2)

您可以在调用sync:

之前尝试在代理上设置额外的参数
store.proxy.extraParams = { param1 : '', param2 : '' };

有传闻证据表明这适用于4.1.3但不适用于早期版本。

另一个想法是只触发一个常规的Ajax.request并发送所需的参数而不是使用树存储来执行此操作。

答案 1 :(得分:2)

我知道这已经过时了,但像我这样的人正在寻找同样的问题...... 如果要保存整个结构而不是仅修改修改的行,则需要在商店代理中定义writer,并在该编写器中设置writeAllFields: false

proxy: {
    type: 'ajax',
    api: {
        read: "/GetTree.json",
        update: "/SetTree.aspx?username=user1"
    },
    reader: {
        type: 'json',
        root: 'children'
    },
    listeners: {
        exception: function (proxy, response, options) {
            // error case
            console.log('Exception in Portlets store proxy...');
            console.log(response);
        }
    },
    writer: {
        type: 'json',
        writeAllFields: true
    }
},