Javascript 如何刷新Ext.tree.treePanel中节点的内容?
我有一个ExtJavascript 如何刷新Ext.tree.treePanel中节点的内容?,javascript,extjs,Javascript,Extjs,我有一个ExtTreePanel,我正试图在其中添加一些服务器端分页。我们正在使用ext2.2.0 我们有一个定制的树,它只有两层。我们在树本身(根?)下列出了25个项目,但是每个项目节点可以有无限数量的子节点。我猜这些是“叶子”的。项目节点和所有子节点都使用自定义的ui提供程序 我在itemNodeUI中添加了上一页/下一页的一些图像,并添加了用页码更新项目节点属性的处理程序。DataUrlphp文件获取这些属性,并基本上将LIMIT附加到sql查询中 一切正常,除了单击下一个/上一个图像时,
TreePanel
,我正试图在其中添加一些服务器端分页。我们正在使用ext2.2.0
我们有一个定制的树,它只有两层。我们在树本身(根?)下列出了25个项目,但是每个项目节点可以有无限数量的子节点。我猜这些是“叶子”的。项目节点和所有子节点都使用自定义的ui提供程序
我在itemNodeUI
中添加了上一页/下一页的一些图像,并添加了用页码更新项目节点属性的处理程序。DataUrl
php文件获取这些属性,并基本上将LIMIT
附加到sql查询中
一切正常,除了单击下一个/上一个图像时,项目节点将折叠。如果展开节点,所有内容都会保持原样,但我需要节点保持展开状态,或者在加载后自动重新展开。我试过使用expand()
,fireEvent('expand')
,expandChildNodes
,整个九码。没什么
以下是单击“上一页”按钮时调用的函数:
onPaginationPrevButtonClick: function(e,t) {
var parentEl = Ext.get(t).findParentNode('.x-tree-node-ct', 10, false).previousSibling;
var treeNodeId = parentEl.getAttribute('ext:tree-node-id');
var treeNode = this.tree.getNodeById(treeNodeId);
var currentPage = parseInt(treeNode.attributes.pageNumber);
if (currentPage > 0) {
treeNode.attributes.pageNumber = currentPage - 1;
}
treeNode.getLoader().load(treeNode);
}
我遇到的另一个问题是,调用上述函数时,itemNodeUI
(扩展了TreeNodeUI
)没有被“刷新”。因此,显示显示多少结果的文本不会从第一页更改。有没有一种方法可以在不重新加载整个树的情况下刷新此节点并使其展开
如果有更好或更简单的方法,我会感谢您的任何意见。我是一个Ext.NEWB,所以我做的几乎每件事都是“黑客”。)
编辑:
我几乎不好意思承认这一点,但通过使用treeNode.reload()
而不是重新加载()
,我完全能够解决崩溃问题。叹息
应该是:
treeNode.reload();
但是,我仍然需要弄清楚如何刷新节点本身,以便显示结果的文本以及prev/next按钮正确显示。我试过使用:
treeNode.parentNode.reload();
…但所做的只是刷新整棵树。我只想更新itemNode本身。有什么想法吗
非常感谢好吧,我已经给每个HTML元素分配了一个唯一的ID,并且正在使用Ext.get更新css样式和innerHTML。这是一个相当丑陋的黑客工作,但它必须这样做
希望其他人能从中有所收获。祝你好运
treeNode.parentNode.reload();