Bonjour,
Je rencontre quelques problèmes concernant l'ouverture d'une PopUp.
En fait je charge une grid à l'ouverture d'une page et j'ai déjà une erreur même si d'apparence ma page récupère bien les données dans ma grille :

comp is undefined
[Break on this error] }else if(!comp.events){


Je vois pas d'ou vient cette erreur.
Voici le code de ma page ou je charge une grille :

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
49
50
51
52
53
54
55
 
 var grid = new Ext.grid.GridPanel({
    store: gridStore,    
    colModel: new Ext.grid.ColumnModel({
        defaults: { sortable: true, editable: false },
        columns: conf.segmentListColumnModel}),
	// viewConfig: { forceFit: false },
	bbar: bbarPager,
	sm: new Ext.grid.RowSelectionModel({ singleSelect: true }),
	width: 900,
	height: conf.pgSizeToHeight( PAGE_SIZE ),
    tbar: [{
        text: 'New',
        handler : function(){
            // access the Record constructor through the grid's store
 
        conf.segmentId   = -1;
        conf.segmentName = 'Nouveau segment';
        conf.segmentDetails = 'Details segment';
    	var segmentCreate = ControlPanelSegmentsCommands ( conf );
    	segmentCreate.show();
    	Ext.MessageBox.alert( 'Segment créé' );
             } }]
  });
 
 
  function _loadSegmentCard ( grid, cpConf, atRowindex ) {
    var record  = grid.getStore().getAt( atRowindex );
    var segId   = record.data[ 'id' ];
    var segCard = Ext.getCmp( cpConf.segWindowId );
    var segForm = Ext.getCmp( cpConf.segFormId );
    cpConf.pSegmentId = segId; 
 
    segForm.getForm().load({
	     waitMsg: 'Loading segment...',
	         url: cpConf.loadSegmentResource,
	      params: {segmentId: segId},
	     success: function ( form, action ) {/*action.result.data*/},
	  failure: function( form, action ) {
	      Ext.MessageBox.alert
	      	( "Load failed", 
	          action.result.errorMessage || action.result.errorMsg ); } }); }
 
  grid.on( 'rowdblclick', function ( grid, rowindex, event ) {
    var record2  = grid.getStore().getAt( rowindex );
    var segId2   = record2.data[ 'id' ];
    var segName2 = record2.data[ 'name' ];
    conf.pSegmentId   = segId2;
    conf.pSegmentName = segName2;
	var segmentCard = ControlPanelSegmentCard( conf );
 
    segmentCard.show();
    (function(){ _loadSegmentCard( grid, conf, rowindex ); }).defer(1); } );
 
  return grid; }
Je n'ai mis que la partie intéressante...

Donc j'ai bien ma grille, et j'ai créé un bouton "New" qui doit ouvrir une PopUp avec un formulaire pour enregistrer une nouvelle ligne :

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
49
50
51
52
53
54
55
 var grid = new Ext.grid.GridPanel({
    store: gridStore,    
    colModel: new Ext.grid.ColumnModel({
        defaults: { sortable: true, editable: false },
        columns: conf.segmentListColumnModel}),
	// viewConfig: { forceFit: false },
	bbar: bbarPager,
	sm: new Ext.grid.RowSelectionModel({ singleSelect: true }),
	width: 900,
	height: conf.pgSizeToHeight( PAGE_SIZE ),
    tbar: [{
        text: 'New',
        handler : function(){
            // access the Record constructor through the grid's store
    	
        conf.segmentId   = -1;
        conf.segmentName = 'Nouveau segment';
        conf.segmentDetails = 'Details segment';
    	var segmentCreate = ControlPanelSegmentsCommands ( conf );
    	segmentCreate.show();
    	Ext.MessageBox.alert( 'Segment créé' );
             } }]
  });

  
  function _loadSegmentCard ( grid, cpConf, atRowindex ) {
    var record  = grid.getStore().getAt( atRowindex );
    var segId   = record.data[ 'id' ];
    var segCard = Ext.getCmp( cpConf.segWindowId );
    var segForm = Ext.getCmp( cpConf.segFormId );
    cpConf.pSegmentId = segId; 
    
    segForm.getForm().load({
	     waitMsg: 'Loading segment...',
	         url: cpConf.loadSegmentResource,
	      params: {segmentId: segId},
	     success: function ( form, action ) {/*action.result.data*/},
	  failure: function( form, action ) {
	      Ext.MessageBox.alert
	      	( "Load failed", 
	          action.result.errorMessage || action.result.errorMsg ); } }); }

  grid.on( 'rowdblclick', function ( grid, rowindex, event ) {
    var record2  = grid.getStore().getAt( rowindex );
    var segId2   = record2.data[ 'id' ];
    var segName2 = record2.data[ 'name' ];
    conf.pSegmentId   = segId2;
    conf.pSegmentName = segName2;
	var segmentCard = ControlPanelSegmentCard( conf );

    segmentCard.show();
    (function(){ _loadSegmentCard( grid, conf, rowindex ); }).defer(1); } );
  
  return grid; }
Seulement, ma PopUp ne s'affiche pas et j'ai une erreur :

segmentCreate is undefined
[Break on this error] segmentCreate.show();

Pourtant ma fonction est bien définie :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
var segmentCreate = ControlPanelSegmentsCommands ( conf );
    	segmentCreate.show();
    	Ext.MessageBox.alert( 'Segment créé' );
Une idée ??
Cela fait un petit moment que je bloque, si vous avez une idée...
Merci !