Ajax 带有动态更新api的extjs TreeStore代理
从我的扩展Ext.data.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
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的操作。