Bonjour,
je suis débutant en EXTJS, J'essaye d'appliquer un filtre à un TreePanel

Voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
   function filterTree(tree, txt, evt){
		var text = txt.getValue();
		Ext.each(this.hiddenPkgs, function(n){
			n.ui.show();
		});
		if(!text){
			tree.filter.clear();
			return;
		}
		tree.expandAll();
 
		var re = new RegExp('^' + Ext.escapeRe(text), 'i');
		tree.filter.filterBy(function(n){
			return !n.attributes.isClass || re.test(n.text);
		});
 
		// hide empty packages that weren't filtered
		tree.hiddenPkgs = [];
        var me = tree;
		tree.root.cascade(function(n){
			if(!n.attributes.isClass && n.ui.ctNode.offsetHeight < 3){
				n.ui.hide();
				me.hiddenPkgs.push(n);
			}
		}, tree);
	}
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
 
                        items: [new Tree.TreePanel({
                            id: 'subjectTreeView',
                            name: 'subjectTreeView',
                            useArrows: true,
                            autoScroll: true,
                            containerScroll: true,
                            animate: true,
                            enableDD: true,
                            ddScroll: true,
                            border: false,
                            filter: new Ext.tree.TreeFilter(this, {
                    		          clearBlank: true,
                    		          autoClear: true
                    	    }),
                            loader: new Ext.tree.TreeLoader({
                                  dataUrl: './getSubjectsTreeNodes.htm'
                            }),
                            root: {
                                nodeType: 'async',
                                text: '<spring:message code="application.tree.Subjects"/>',
                                draggable: false,
                                id: 'subjectRoot',
                                expand: true,
                                subEntityName: 'subject',
                                iconCls: 'subjectNode',
                                create: true,
                                allowedActions: {
                                    "create": true
                                }
                            }, 
                            tbar:[ ' ',
                                new Ext.form.TextField({
                                    id: 'findASubject',
                                    name: 'findASubject',
                                    width: 140,
                                    emptyText:'<spring:message code="dataEntryMgmt.subjectEmptyText"/>',
                                    enableKeyEvents: true,
                                    listeners: {
 
                                           keydown: function(txt, evt){
	                                              filterTree(Ext.getCmp("subjectTreeView"), txt, evt);
                                           }
                                       }
                                })]
 
                        })],
Quand je fais tourner mon code, j'ai une erreur javascript qui est :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
this.tree is undefined
[Break On This Error] startNode = startNode || this.tree.root;   ( in the method filterBy )
Il y a queque chose qui m'échappe. La variable "filter" est-elle bien définie ? Ou y a t-il autre chose ? Je suis perdu. Merci pour vos réponses