Ajax 带有动态更新api的extjs TreeStore代理

Ajax 带有动态更新api的extjs TreeStore代理,ajax,json,tree,extjs4,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

从我的扩展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
页面。

在调用sync之前,您可以尝试在代理上设置额外的参数:

store.proxy.extraParams = { param1 : '', param2 : '' };
有传闻证据表明这在4.1.3中有效,但在早期版本中不起作用


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

我知道这很古老,但对于像我这样正在搜索相同问题的人来说。。。 如果要保存整个结构而不仅仅是修改的行,则需要在存储代理中定义一个
编写器
,并在该编写器中设置
writealFields: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
    }
},

您可以循环浏览所有记录并将其标记为脏记录。顺便问一下,你真的想这么做吗?我只是使用了一个jQuery Ajax请求并隐藏了树面板上的
markDirty
指示器。谢谢我不太明白你的意思。我现在明白了。如果我能想出如何在这里发布代码块,我会告诉你我想到了什么。使用
Ext.Ajax.request({…
)来完成我对jQuery的操作。