我试图在用户单击按钮时检索TreePanel的选定节点(如果有的话)。你如何检索TreePanel中的选择节点?谢谢。如何在ExtJS TreePanel中找到选定的节点?
回答
你会做的是创建一个事件处理程序。每个ExtJs对象都有一些自动关联的事件。你会写一个事件处理函数(一个函数),然后你可以分配给一个事件监听器。因此,在这种情况下,您可能希望将事件处理程序分配给TreePanel组件的“单击”事件。
var tbPan = new Ext.tree.TreePanel({
itemId:'navTree',
autoScroll: true,
root: new Ext.tree.TreeNode({
id: 'root',
text: 'My Tree Root',
rootVisible: true
}),
listeners: {
click: {
fn:clickListener
}
}
});
clickListener = function (node,event){
// The node argument represents the node that
// was clicked on within your TreePanel
};
但是,如果您想知道已经选择的节点会发生什么?那时你需要访问TreePanel的选择模型。你提到了一个按钮动作。比方说,你想一个函数应用于该按钮的点击处理程序来获取所选择的节点:
var btn = new Ext.Button({
text: 'Get Value',
handler: function (thisBtn,event){
var node = Ext.fly('navTree').getSelectionModel().getSelectedNode();
}
});
您使用的轻量级元素得到快速参考TreePanel中本身,然后使用该TreePanel中对获得的内部方法它是选择模型。之后,您使用该选择模型(在此情况下为DefaultSelectionModel)内部方法来获取选定节点。
您可以在Ext JS文档中找到丰富的信息。在线(和离线AIR应用程序)API非常广泛。即使您不直接使用Core,Ext Core手册也可以让您深入了解ExtJS开发。
var selectednode = tree.getSelectionModel().getSelectedNode();
//alert(selectednode);
if(selectednode!=tree.getRootNode())
selectednode.remove();
@Steve
Ext.fly('navTree').getSelectionModel().getSelectedNode();
是行不通的,使用
Ext.getCmp('navTree').getSelectionModel().getSelectedNode();
代替。
在Ext JS的4,你可以把一个监听树面板上是这样的:
listeners: {
itemclick: {
fn: function(view, record, item, index, event) {
//the record is the data node that was clicked
//the item is the html dom element in the tree that was clicked
//index is the index of the node relative to its parent
nodeId = record.data.id;
htmlId = item.id;
}
}
}
var myTree = Ext.getCmp('tree-panel');
var selectednode = myTree.selModel.selNode
对于ExtJS的4 ...
我在树面板中添加以下监听器:
listeners:
{
itemclick: function(view, record, item, index, e)
{
selected_node = record;
}
}
其中,selected_node是全局变量。像附加的功能和去除可与我已经创建了添加节点按钮和删除,其使用上述追加和删除节点到所选择的节点Node此记录变量例如为:
selected_node.appendChild({text: 'New Node', leaf: true});
selected_node.remove();
使用。 remove()将删除所选节点以及所有子节点!您可能会在任何时间使用(选择发生在左键和右键点击时): var selected_node = Ext.getCmp('tree_id')。getSelectionModel()。getSelection()[0 ]。
在ExtJS4中,您可以使用getLastSelected()方法返回树中最后选择的项目。
见ExtJS的:http://docs.sencha.com/ext-js/4-0/#!/api/Ext.selection.Model-method-getLastSelected
一个例子可能是这样的:
var tree = this.up("window").down("supportedcontrolcircuitmodelselector");
var selectedCircuit = tree.getSelectionModel().getLastSelected()
var nodesSelected = Ext.getCmp('foldersTree').getSelectionModel().selected.items;
if(nodesSelected.length > 0)
{
var node = nodesSelected[0];
console.log(node.internalId);
}
这是ExtJS4 TreePanel中
var tree = Ext.create('Ext.tree.Panel', {
store: store,
renderTo: 'tree_el',
height: 300,
width: 250,
title: 'ExtJS Tree PHP MySQL',
tbar : [{
text: 'get selected node',
handler: function() {
if (tree.getSelectionModel().hasSelection()) {
var selectedNode = tree.getSelectionModel().getSelection();
alert(selectedNode[0].data.text + ' was selected');
} else {
Ext.MessageBox.alert('No node selected!');
}
}
}]
});
简单....
itemclick: function(view, record, item, index, e)
{
alert(record.data.text);
}
- 1. Extjs treepanel:如何在叶节点上放置节点
- 2. ExtJS:如何动态添加子节点到treepanel
- 3. Extjs treePanel节点范围问题
- 4. EXTJS找到节点的父节点
- 5. Extjs TreePanel:如何按类或属性隐藏节点?
- 6. ExtJS的4去除TreePanel中自定义拖动给错误节点拖动
- 7. 如何将子项添加到TreePanel中的节点?
- 8. Ext.net如何访问treepanel节点
- 9. 的ExtJS TreePanel中:扩大()expandChildNodes()
- 10. ExtJS TreePanel - 刷新并保持节点状态
- 11. 如何在ExtJS4的TreePanel中插入新节点?
- 12. Extjs树不会appendChold到树面板中的选定节点
- 13. ExtJS TreePanel RESTful支持
- 14. 如何将节点添加到TreeView中的选定节点?
- 15. 如何找到如果选定节点是树视图的第一个节点
- 16. ExtJS的TreePanel中不工作在IE 8
- 17. 如何找到特定的xml节点?
- 18. 如何从Ext TreePanel中删除节点(如果该节点尚未呈现)
- 19. 在图中,如何找到一组节点的最近节点?
- 20. 如何在二叉树中找到节点的父节点?
- 21. TreePanel节点与过滤的孩子
- 22. 可调整TreePanel中的ExtJS的
- 23. 拖放图像到EXTJS TreePanel和TreeNode
- 24. 如何通过拖放功能将TreePanel的根节点添加到另一个TreePanel中?
- 25. 如何在节点树中找到节点数据?
- 26. 如何默认选择extjs中的孩子节点
- 27. 找到指定节点后找到兄弟节点
- 28. TreePanel中不扩大的ExtJS 3
- 29. ExtJS treepanel没有显示
- 30. ExtJS查找树枝内的节点
工作,谢谢! – 2009-05-05 18:43:38
很高兴能帮到您 – 2009-05-06 02:34:41
在ExtJS 4+中,`Ext.selection.Model`中没有`getSelectedNode()`方法,但是有`getSelection()`。 – 2013-11-22 08:28:47