我有两个 ExtJs TreePanel。一棵树是完全加载的(称为 FLTree),第二棵是部分加载的(称为 PL 树)。当用户单击完全加载的树中的节点并且该节点存在于部分加载的树中时,我想在部分加载的树中为该节点触发 checkchange 事件。
这可能吗?
我有两个 ExtJs TreePanel。一棵树是完全加载的(称为 FLTree),第二棵是部分加载的(称为 PL 树)。当用户单击完全加载的树中的节点并且该节点存在于部分加载的树中时,我想在部分加载的树中为该节点触发 checkchange 事件。
这可能吗?
是的,当一个项目被点击时触发Ext.tree.Panel
的itemclick
事件(你需要将它添加到控制器或树形面板的 listeners 属性中。属性是:
someFunctionName: function(treeview, record, item, index, e, eOpts) { ... }
从记录变量中,您可以从第一棵树的选定节点获取所需的数据。
要查找其他树形面板,您可以使用树形视图上的up()
和down()
方法:
var parentContainer = treeview.up('container_xtype[someProperty1=someValue1]');
您可以在组件层次结构中向上走(获取包含两个树面板的父容器)。
var pLtree = parentContainer.down('treepanel[someProperty2=someValue2]');
如果两个树面板没有共同的父级,那么您可以使用
var pLtree = Ext.ComponentQuery.query('treepanel[someProperty2=someValue2]')[0];
全局方法,它返回匹配组件的数组。但是请确保您使用了一个好的组件选择器查询(您可以检查返回的数组的长度是否 == 1)。
最后你需要使用这里pLtree.fireEvent('checkchange', ...);
描述的。