Bonjour,
J'utilise une approche modulaire pour implementer qq composents ExtJS. L'un d'eux herite de EditorGridPanel (voir code au-dessous). Une des colonnes a un ComboBox comme editeur, dont la valeur (numerique) est differente de celle a afficher (string plus parlante). DOnc j'ai besoin d'un editeur base sur ce combo, ainsi que d'un renderer, base sur le meme combo. J'ai essaye sans success de declarer le combo dans le module. Donc j'ai essaye de le declarer avant la declaratino du module, ce qui marche. Mais ca me semble incorrect comme approche, pas dans l'esprit ExtJS... Si quelqu'un a un conseil a ce propos... Merci!
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 var mass_combo = new Ext.form.ComboBox({ typeAhead: true, triggerAction: 'all', lazyRender:true, mode: 'local', store: new Ext.data.ArrayStore({ id: 0, fields: [ 'myId', 'displayText' ], data: [[1, 'High'], [2, 'Medium'], [3, 'Low']] }), // eo store valueField: 'myId', displayField: 'displayText' }); // eo editor App.table.Spreadsheet = Ext.extend(Ext.grid.EditorGridPanel, { //Defaults title : 'Generic spreasheet' ,iconCls : 'icon-spreadsheet' // ,intern_mass_combo: new Ext.form.ComboBox({...}) doesn't work as expected ,initComponent : function() { App.table.Spreadsheet.superclass.initComponent.call(this); } columns: [{ header : 'H1' ,dataIndex : 'h1' ,editor : new Ext.form.Checkbox() } ,{ header : 'H2' ,dataIndex : 'h2' ,editor : mass_combo ,renderer : Ext.util.Format.comboRenderer(mass_combo) // ,renderer : Ext.util.Format.comboRenderer(this.intern_mass_combo) // doesn't work } ] });
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Ext.apply(Ext.util.Format, { comboRenderer: function(combo) { return function(value) { var record = combo.findRecord(combo.valueField, value); return record ? record.get(combo.displayField) : value; }; } // eo comboRenderer() }); // eo Ext.apply()
Partager