2013-08-23 1 views
0

У меня есть панель дерева ExtJs 4.1. Дерево имеет несколько узлов. Теперь я разрешаю пользователю выполнять поиск по узлу дерева. Поэтому, если я запустил поиск по слову ASP.NET, поиск должен выделить все узлы, текст которых содержит ключевое слово ASP.NETКак выделить узел В панели дерева extJs 4.1

Как это сделать?

Спасибо

+0

Вы нашли мой ответ полезным, или это не соответствует вашим потребностям? –

ответ

2

Вы должны искать для детей от корневого узла TreePanel «s, а затем использовать регулярные выражения, чтобы проверить значение узла против вашего поиска текста.

Рабочий пример

var store = Ext.create('Ext.data.TreeStore', { 
    root: { 
    expanded: true, 
    children: [ 
     { text: "Javascript", leaf: true }, 
     { text: "ASP.net", leaf: true }, 
     { text: "Also ASP.net", leaf: true } 
    ] 
    } 
}); 

Ext.create('Ext.tree.Panel', { 
    title: 'Example Tree', 
    width: 200, 
    height: 150, 
    store: store, 
    rootVisible: false, 
    multiSelect: true, 
    renderTo: Ext.getBody(), 
    dockedItems: [{ 
    xtype: 'toolbar', 
    dock : 'bottom', 
    items : [{ 
     text: 'Search for ASP.net', 
     handler: function(){ 
      var me = this, 
       panel = me.up('panel'), 
       rn = panel.getRootNode(), 
       regex = new RegExp("ASP.net"); 

      rn.findChildBy(function(child){ 
       var text = child.data.text; 
       if(regex.test(text) === true){ 
        panel.getSelectionModel().select(child, true); 
       } 
      }); 
     } 
    }] 
    }] 
}); 

Рабочая jsFiddle: http://jsfiddle.net/tdaXs/

СОВЕТ: Обратите внимание на второй параметр в методе .select() из TreePanel «ы selectionModel. Это необязательный параметр keepExisting, который должен быть установлен на true при ручном выборе узлов. См. Документы: http://docs.sencha.com/extjs/4.1.0/#!/api/Ext.selection.Model-method-select

Надеюсь, это поможет!

Смежные вопросы