Я пытаюсь получить выбранный узел, если он есть, TreePanel, когда пользователь нажимает кнопку. Как получить выбранный узел в TreePanel? Благодарю.Как найти выбранный узел в ExtJS TreePanel?
ответ
Что бы вы сделали, это создать обработчик событий. Каждый объект ExtJs имеет несколько событий, которые автоматически связаны с ними. Вы должны написать обработчик событий (функцию), который затем можно назначить прослушивателю событий. Таким образом, в этом случае вы, вероятно, захотите назначить обработчик событий событию «click» вашего компонента 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 для получения это модель выбора. После этого вы использовали внутренний метод Selection Model (в данном случае DefaultSelectionModel), чтобы получить выбранный узел.
В документации Ext JS содержится большое количество информации. Онлайновый (и офлайн-приложение AIR) API довольно обширен. Руководство Ext Core также может дать вам представление о разработке ExtJS, даже если вы не используете Core напрямую.
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 - глобальная переменная. Такие функции, как добавлять и удалять можно использовать с этой записью переменной т.д .:
selected_node.appendChild({text: 'New Node', leaf: true});
selected_node.remove();
я создал кнопки для Add Node и Delete Node, которые используют выше для добавления и удаления узлов выбранного узла. remove() удалит выбранный узел, а также все дочерние узлы!
Вы также можете получить выбранный узел в любое время с помощью (выбор происходит с влево, а также правой кнопкой мыши):. вар 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. Как перенести узел/родительский узел TreePanel на другой TreePanel?
- 2. Как свернуть узел, если узел открывается в extjs treepanel
- 3. ExtJS TreePanel RESTful поддержка
- 4. Extjs treepanel: как удалить узел на листовые узлы
- 5. Extjs TreePanel с группировкой
- 6. ExtJS - Сохранить состояние treePanel.
- 7. Extjs TreePanel store.load() проблемы
- 8. ExtJs 4.2 treepanel
- 9. Extjs treepanel store.load() issue
- 10. Extjs TreePanel не расширен
- 11. treePanel не выбирает узел
- 12. ExtJS: как иметь TreePanel с несколькими корнями?
- 13. extjs загрузить изображение в TreePanel
- 14. Скрытие узла в ExtJs 4.1 TreePanel
- 15. Как найти выбранный узел в дереве?
- 16. extjs treepanel expand collapse event
- 17. Как узнать, выбран ли выбранный узел в дереве? (ExtJS 4)
- 18. Проблемы с extjs treepanel renderer
- 19. ExtJS - загрузка данных JSON в treepanel
- 20. Extjs 4 treepanel Перезагрузка и разворачивание
- 21. ExtJS: Как динамически добавлять дочерние узлы в treepanel
- 22. как переименовать узел в extjs 4 tree
- 23. ExtJS 5.1: Treepanel как панель навигации
- 24. Изменяемые TreePanel в окне в ExtJS
- 25. ExtJs, как динамично менять хранилище treepanel
- 26. Extjs Bind TreePanel static data to FormPanel
- 27. ExtJS, развернуть все дети как TreePanel
- 28. Extjs TreePanel - Как удалить корень дерева
- 29. extjs Как сменить панель с помощью treepanel
- 30. Как автоматически развернуть/автоматически выбрать добавленный узел при добавлении узлов в ExtJS 4.2 treepanel?
Это сработало, спасибо! –
Glad Я мог бы помочь –
В ExtJS 4+ нет метода 'getSelectedNode()' в 'Ext.selection.Model', но есть' getSelection() '. –