2011-08-26 23 views
5

Quiero definir una referencia dentro del controlador para habilitar/deshabilitar la operación de eliminación en el cambio de selección. Pero no lo entiendo bien, por lo que getDelButton() - Method no está definido. Por favor ayuda ...Referencia de ExtJs 4 al botón de la barra de herramientas en la cuadrícula

controlador:

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

...

this.getDelButton().setDisabled(false); 

Ver definición:

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

Gracias de antemano ...

+1

Acepte una respuesta, o agregue un comentario si no obtiene lo que necesita. – LittleTreeX

Respuesta

0

que tuve un problema similar, resultó ser el g deshacerse del selector, normalmente el selector usa xtype y la cuadrícula tiene cuadrícula o panel de red. Intente utilizar selector: 'gridpanel >button #delete'

7

Es posible que tenga problemas con su 3 Selector:

  1. que no debería tener un espacio entre el componente y el selector de ID. Use: button#delete.
  2. Como nscrob mencionó, es probable que necesite usar gridpanel en lugar de grid.
  3. El button NO es un hijo directo de grid. Es muy probable que sea un hijo directo de toolbar en este caso. Lo que esto significa es que debe hacer algo más como: gridpanel > toolbar > button#delete O gridpanel button#delete.

En referencia al punto 3 anterior, el selector de > significa hijo directo de los padres. Eso significa literalmente un hijo del padre, no solo un componente en algún lugar de la cadena de anidación. Si solo desea presionar un botón en su gridpanel, utilice gridpanel button. Esto buscará en todos los hijos de gridpanel y en todos esos niños para encontrar cualquier cosa que coincida con button. Tenga en cuenta, sin embargo, que al usarlo de esta manera devolverá TODOS los botones dentro del gridpanel (a menos que, por supuesto, especifique el id.).

Por último, usar tu consola en Firebug te ayudará INMEDIATAMENTE. Abre firebug, y en la consola puedes ejecutar comandos. Por lo tanto, cargue la grilla y ejecute el siguiente comando: Ext.ComponentQuery.query('gridpanel > toolbar > button#delete') y vea qué se devuelve. De esta forma, no tiene que seguir yendo y viniendo de su código y refrescando la ventana del navegador. Tenga en cuenta que query() devuelve una matriz.

+0

+1 para la respuesta completa. Pero creo que el # 2 no es una causa. De lo contrario, sencha tendría ejemplos inválidos en [docs] (http://docs.sencha.com/ext-js/4-0/#!/api/Ext.app.Controller) en _Usando la sección refs_. –

+0

No soy un gurú de ExtJS de ninguna manera. Sin embargo, cuando intenté usar el selector en Ext.ComponentQuery.query() no funcionaría a menos que utilizara gridpanel vs grid. Tengo curiosidad de por qué, y si lo averiguo, lo publicaré aquí. Gracias por el +1! – LittleTreeX

Cuestiones relacionadas