2011-08-26 12 views
5

Voglio definire un riferimento all'interno del controller per abilitare/disabilitare la cancellazione del cambiamento di selezione. Ma non ho capito bene, quindi il metodo getDelButton() - restituisce undefined. Si prega di aiuto ...ExtJs 4 riferimento al pulsante della barra degli strumenti nella griglia

Controller:

refs:[ 
     { ref: 'tabPanel', selector: 'viewport > tabPanel' }, 
     { ref: 'grid', selector: 'tabPanel > usermanagementgrid' }, 
     { ref: 'delButton', selector: 'grid > button #delete'} 
], 

...

this.getDelButton().setDisabled(false); 

Vista la definizione:

dockedItems: [{ 
     xtype: 'toolbar', 
     items : [ { 
      xtype: 'button', 
      id: 'delete', 
      iconCls: 'drop-add', 
      text: 'Add', 
      tooltip: 'Press to add a new user.', 
      action: 'addUser', 
      scope: this, 
     }, 

Grazie in anticipo ...

+1

Si prega di accettare una risposta, o aggiungere un commento se non si ottiene quello che ti serviva. – LittleTreeX

risposta

0

ho avuto un problema simile, si è rivelato essere il g riduci selettore, normalmente il selettore usa xtype e la griglia ha griglia o griglia. Prova a utilizzare selector: 'gridpanel >button #delete'

7

probabilmente hai 3 problemi con il selettore:

  1. Non si dovrebbe avere uno spazio tra il componente e il selettore id. Utilizzare: button#delete.
  2. Come indicato da nscrob, è probabile che sia necessario utilizzare gridpanel anziché grid.
  3. button NON è un figlio diretto di grid. È molto probabile che sia un figlio diretto di toolbar in questo caso. Ciò significa che devi fare qualcosa di più: gridpanel > toolbar > button#delete O gridpanel button#delete.

In riferimento a # 3 sopra, il selettore > indica DIRECT CHILD del genitore. Ciò significa letteralmente un figlio del genitore, non solo un componente da qualche parte lungo la catena di nidificazione. Se si desidera semplicemente premere un pulsante nel proprio , utilizzare gridpanel button. Questo cercherà tra tutti i bambini di e in tutti quei bambini di trovare qualsiasi cosa che corrisponda a button. Si noti tuttavia che l'utilizzo in questo modo restituirà TUTTI i pulsanti all'interno dello (a meno che, ovviamente, non si specifichi l'ID).

Infine, l'utilizzo della console in Firebug vi aiuterà in modo IMMENSATO. Apri firebug e nella console puoi eseguire i comandi. Quindi, caricare la griglia ed eseguire il seguente comando: Ext.ComponentQuery.query('gridpanel > toolbar > button#delete') e vedere cosa viene restituito. In questo modo non devi continuare ad andare avanti e indietro dal tuo codice e aggiornare la finestra del browser. Tieni presente che query() restituisce un array.

+0

+1 per la risposta completa. Ma penso che il n. 2 non sia una causa. Altrimenti sencha avrebbe esempi non validi in [docs] (http://docs.sencha.com/ext-js/4-0/#!/api/Ext.app.Controller) nella sezione _Using refs_. –

+0

Non sono un guru di ExtJS con qualsiasi mezzo. Tuttavia, quando ho provato a utilizzare il selettore in Ext.ComponentQuery.query() non funzionava a meno che non avessi usato gridpanel vs grid. Sono curioso di sapere perché, e se lo capisco, lo posterò qui. Grazie per il +1! – LittleTreeX

Problemi correlati