2011-02-04 23 views

Respuesta

8

Creo que deberías mirar usando un conjunto de botones ExtJS estándar. Un botón se puede asignar a un grupo para que actúen como los elementos que se muestran en su enlace.

Vea este ejemplo:

{ 
    xtype: 'button', 
    text: 'Choice 1', 
    toggleGroup: 'mygroup' 
}, { 
    xtype: 'button', 
    text: 'Choice 2', 
    toggleGroup: 'mygroup' 
}, { 
    xtype: 'button', 
    text: 'Choice 3', 
    toggleGroup: 'mygroup' 
} 

Los botones también tienen una propiedad denominada enableToggle, que les permite alternar, y se establece automáticamente en true cuando se establece una toggleGroup, y toggleGroup dice ExtJS cómo se relacionan.

Tenga en cuenta que se parecen a los botones ExtJS normales, pero que se comporta como usted desea.

+0

Gracias, esto funciona. ¿Cómo puedo obtener el valor seleccionado ahora? Además de hacerlo con un eventHandler para los botones y una variable global – Chielus

+0

Si sabe en qué contenedor se encuentra, puede ir a través de los botones y ver cuál se presiona. Si conoce uno de los botones, puede encontrar el padre y hacer lo mismo antes. No sé si un 'ButtonGroup' te dará ventajas. – Chau

+1

@Chau Funciona como un encanto ... excepto un pequeño problema. Todavía hay capacidad para elegir nada, significa deseleccionar el botón :(... ¿Hay alguna forma de evitar tales cosas si se presiona algún botón por defecto? – mastak

1

Sólo para responder @ comentario de Mastak (en la respuesta anterior), con el fin de no permitir la acción de-de la selección de un botón, añadir este oyente a cada botón:

listeners: { 
    click: function(me, event) { 
     // make sure a button cannot be de-selected 
     me.toggle(true); 
    } 
} 

De esa manera, cada clic en un botón lo volverá a seleccionar.

-DBG

4

Hay una manera menos complicada (mejor?) Para no permitir anular la selección de un botón. Establecer la opción de configuración allowDepress false:

{ 
    xtype: 'radiogroup', 
    layout: 'hbox', 
    defaultType: 'button', 
    defaults: { 
     enableToggle: true, 
     toggleGroup: 'mygroup', 
     allowDepress: false, 
     items: [ 
      { text: 'Choice 1'}, 
      { text: 'Choice 2'}, 
      { text: 'Choice 3'} 
     ] 
    } 
} 
Cuestiones relacionadas