当用户单击按钮时,我尝试检索TreePanel的选定节点。如何在TreePanel中检索选择节点?谢谢。
发布于 2009-05-05 13:19:37
您要做的是创建一个事件处理程序。每个ExtJs对象都有许多自动与之关联的事件。您可以编写一个事件处理程序(函数),然后可以将其分配给事件侦听器。因此,在这种情况下,您可能希望为TreePanel组件的'click‘事件分配一个事件处理程序。
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的选择模型。你提到了一个按钮动作。假设您想要将一个函数应用于该按钮的click处理程序,以获取选定的节点:
var btn = new Ext.Button({
text: 'Get Value',
handler: function (thisBtn,event){
var node = Ext.fly('navTree').getSelectionModel().getSelectedNode();
}
});
您使用了flyweight元素来获取对TreePanel本身的快速引用,然后使用该TreePanel的内部方法来获取它的选择模型。之后,您使用了Selected的内部方法(在本例中是DefaultSelectionModel)来获取所选的节点。
您将在Ext文档中找到丰富的信息。在线(和离线AIR应用程序) API相当广泛。Ext Core手册还可以让您深入了解ExtJS开发,即使您不直接使用它。
发布于 2012-08-19 17:02:52
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!');
}
}
}]
});
发布于 2011-05-01 00:01:33
在ExtJS4中,您可以将一个侦听器放在树面板上,如下所示:
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;
}
}
}
https://stackoverflow.com/questions/822319
复制相似问题