在ExtJs4中,对于treepanel增加节点后应该如何刷新? 10
在ExtJs4的api中,以下方式创建一棵树。varstore=Ext.create('Ext.data.TreeStore',{root:{expanded:true,...
在ExtJs4的api中,以下方式创建一棵树。
var store = Ext.create('Ext.data.TreeStore', {
root: {
expanded: true,
children: [
{ text: "detention", leaf: true },
{ text: "homework", expanded: true, children: [
{ text: "book report", leaf: true },
{ text: "algebra", leaf: true}
] },
{ text: "buy lottery tickets", leaf: true }
]
}
});
Ext.create('Ext.tree.Panel', {
title: 'Simple Tree',
width: 200,
height: 150,
store: store,
rootVisible: false,
renderTo: Ext.getBody()
});
如果这样的方式创建的树,添加节点后,用网上说的
me.getStore().reload();
tree.root.reload();
之类常规的刷新方法都不管用,请问该如何刷新? 展开
var store = Ext.create('Ext.data.TreeStore', {
root: {
expanded: true,
children: [
{ text: "detention", leaf: true },
{ text: "homework", expanded: true, children: [
{ text: "book report", leaf: true },
{ text: "algebra", leaf: true}
] },
{ text: "buy lottery tickets", leaf: true }
]
}
});
Ext.create('Ext.tree.Panel', {
title: 'Simple Tree',
width: 200,
height: 150,
store: store,
rootVisible: false,
renderTo: Ext.getBody()
});
如果这样的方式创建的树,添加节点后,用网上说的
me.getStore().reload();
tree.root.reload();
之类常规的刷新方法都不管用,请问该如何刷新? 展开
4个回答
展开全部
数据绑定
tree.on('beforeload', function (node) {
node.select();
tree.loader.dataUrl = 'UnitsList.aspx?cmd=getTree&ID=' + node.id + '&rd=' + Math.random(); //定义子节点的Loader
});
GetTree只用查询 ParentID=ID 的数据 返回即可
添加之后 刷新
if (tree.getSelectionModel().getSelectedNode() == null || tree.getSelectionModel().getSelectedNode().id == null) {
tree.root.reload();
} else {
tree.getNodeById(tree.getSelectionModel().getSelectedNode().id).reload();
}
tree.on('beforeload', function (node) {
node.select();
tree.loader.dataUrl = 'UnitsList.aspx?cmd=getTree&ID=' + node.id + '&rd=' + Math.random(); //定义子节点的Loader
});
GetTree只用查询 ParentID=ID 的数据 返回即可
添加之后 刷新
if (tree.getSelectionModel().getSelectedNode() == null || tree.getSelectionModel().getSelectedNode().id == null) {
tree.root.reload();
} else {
tree.getNodeById(tree.getSelectionModel().getSelectedNode().id).reload();
}
更多追问追答
追问
tree.root.reload();
tree.getNodeById(tree.getSelectionModel().getSelectedNode().id).reload();
提示不是一个方法,是不是大侠你的这种方式适合proxy重加载的?
我这种一开始就取出了所有数据加载页面的该如何处理呢?
追答
提示reload 不是一个方法
可能你的根节点不是 nodeType: 'async',
或者其他子节点的 leaf: true 你设置的不是true
一开始加载的也无所谓 你无非是想修改后刷新此节点或者刷新此节点的父节点
获取到此节点或者此节点的父节点刷新一下即可
前提是根节点必须是 'async'
root: {
nodeType: 'async',
..
}
而且子节点必须是leaf: true
因为必须是“静态树”才有reload()方法
当然子节点默认leaf就是true 根节点需要你写上面这个属性
展开全部
添加之后刷新
if (tree.getSelectionModel().getSelectedNode() == null || tree.getSelectionModel().getSelectedNode().id == null) {
tree.root.reload();
} else {
tree.getNodeById(tree.getSelectionModel().getSelectedNode().id).reload();
}
if (tree.getSelectionModel().getSelectedNode() == null || tree.getSelectionModel().getSelectedNode().id == null) {
tree.root.reload();
} else {
tree.getNodeById(tree.getSelectionModel().getSelectedNode().id).reload();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你数据都是写死的,怎么刷新都刷不出个花来的。除非你改变了数据
更多追问追答
追问
改变了数据的,我通过构造新store后也不改变,请问这个该如何处理呢?
追答
代码发上来。你这代码store根本没配置proxy,哪里从后台来数据啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
store.load();
追问
用了,也不管用呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询