• HomePagina Inicial
  • Blog Mis cosillas
  • Portfolio Mis trabajos
  • Acerca deeste blog y su autor
    • Sobre Mi 
    • Oridoki 
  • ContactarFormulario
  • Categorias

    • Blog
      • Control de Versiones
        • GIT
      • Diseño
      • Frameworks
        • CakePHP
        • CodeIgniter
      • JavaScript
        • EXT JS
        • JQuery
      • Magento
      • Maquetación
        • CSS
        • HTML
      • MiniCodes
      • MySQL
      • PHP
      • Proyectos
      • TextMate
      • Varios
      • Wordpress
    • Portfolio

ExtJS – ComboBox opción por defecto

Posted by Adrià Cidre Categories: Blog, EXT JS, JavaScript Tags: comboBox, default, defaultvalue, defecto, ExtJS, selected

Quizá soy yo no he sido capaz de encontrar la solución correcta pero me parece que una cosa tan simple como tener una opción seleccionada por defecto en un desplegable, no debería ser una tarea tan y tan complicada.

Aquí tenéis el código para poder tener una opción seleccionada por defecto en un desplegable con EXTJS

{
	xtype		: 'combo',
        fieldLabel	        : 'Sexo',

	hiddenName	: 'sexo',
        name		: 'sexo',

	mode		: 'local',
        width		: 250,
	displayField     : 'name',
	valueField	        : 'id',
	store                : new Ext.data.SimpleStore({
	        id		: 0 ,
	        fields	: [  'id', 'name' ],
	        data	: [
			    [1, 'Hombre'],
			    [2, 'Mujer']
			]
	    }),
	listeners	: {
		beforerender: function(combo){
			combo.setValue(1);// El ID de la opción por defecto
		}
	},
},

Si bien es cierto que podemos ponerle un valor por defecto con la propiedad value, Nos pone como valor el nombre es decir ‘Hombre’ o ‘Mujer’ y no el ID ’1′ o ’2′.

Lo ‘único‘ que hay que hacer entonces es utilizar la propiedad ‘hiddenName‘ y poner en el listener ‘beforerender‘, que se ejecuta una vez se ha cargado el store, una función que nos cargue como valor el ID que queramos.
Me ha costado encontrar como hacerlo, espero que no perdáis tanto rato como yo, si tenéis dudas preguntad :-)

Share This Post!

Subscribe to our RSS feed. Tweet this! StumbleUpon Reddit Digg This! Bookmark on Delicious Share on Facebook

13 Responses to ExtJS – ComboBox opción por defecto

  1. Normalmente lo único que hago es poner esto “combo.setValue(1)” en el evento “show” o en el evento “load” del store, dependiendo de la aplicación que esté haciendo.

    saludos

    Posted on 22/04/2009 at 19:14
    |
    Crysfel says
  2. yo normalmente pongo emptyText: ‘-’
    Oye a ver si podiais echarme una mano, como va el tema de la licencia del extJS? hay q hacer algo especial o con q no tenga animo de lucro vale? es q no tengo ni idea de como van esas cosas

    Posted on 15/06/2009 at 11:37
    |
    felipe says
  3. Bueno creo que si estas haciendo una aplicación open source, y liberas el código no tienes que hacer nada especial, sin embargo si quieres hacer una aplicación para venderla entonces creo que necesitas la licencia….

    Posted on 15/06/2009 at 12:04
    |
    Adrià Cidre says
  4. Hola Adrià,

    estoy haciendo una aplicación con ExtJs y tengo este problema, no logro dejar una opción por defecto, esto lo debo hacer para una pantalla de edición de datos anteriormente ingresados…

    existe la posibilidad de que postees un ejemplo mas completo, dado que he intentado todo lo que señalaste, pero lo unico que siempre consigo es que se escriba el valor del ID visualmente en el combo y no que quede seleccionado el item con ese ID.

    gracias por adelantado y saludos desde Chile

    Posted on 06/07/2009 at 22:38
    |
    David says
  5. Hola de nuevo, finalmente logré hacer esto, gracias a la respuesta de Crysfel, tuve que crear un listener para el evento load del store del combobox, y ahí cambiar el valor…

    por alguna razón si el setValue no estaba en este listener, solo agregaba el valor a la lista que se desplegaba. Creo que esto se debe a que el store estaba aún cargandose, por lo que o no podía acceder a él o no encontraba el valor, por lo que simplemente lo escribía.

    bueno, lo hago saber para algún otro que esté empezando en esto de extjs como yo.

    Posted on 07/07/2009 at 14:43
    |
    David says
  6. Perdona que no haya podido responder antes, la verdad es que me pasé bastante tiempo intentando hacer funcionar el combobox a mi gusto, y cuanta más info aportemos entre todos a este tema en la red mejor…. :-) Por cierto visita el sitio de Crysfel porqué está genial, muy bien organizado y fácil para empezar con ExtJS.

    Un Saludo

    Posted on 07/07/2009 at 14:52
    |
    Adrià Cidre says
  7. Hola!
    De verdad, este asunto es un dolor de cabeza. El código publicado, funciona de perillas. La única corrección que yo le hice fue ponerle triggerAction: ‘all’ osino, solo despliega la opción elegida… con eso las muestra todas.

    Pero mi problema va por otro lado, cuando la fuente de datos no es local sino ‘remote’, no funciona. No hay caso, he probado mil y una alternativa y siempre dice q no encuentra la opción. Supongo que tiene que ver con que los datos se cargan al hacer click en en la flechita (el gatillador). ¿Alguna idea?? ¿alguien lo resolvió?

    Saludos

    Posted on 07/10/2009 at 17:10
    |
    Victoria says
  8. Buenas Victoria,

    supongo que tendrías que encontrar el listener que se lance después de cargar tus datos, y poner en el la siguiente instrucción:

    combo.setValue(1);// El ID de la opción por defecto

    No se que listener puede ser, quizá el click, aunque es probable que no, ya que al hacer click todavía no hay datos, habría que buscar uno que saltara después de la carga de datos. Ya nos contarás.

    Posted on 07/10/2009 at 17:42
    |
    Adrià Cidre says
  9. Si, ya lo pillé.
    Les cuento, el asunto es q al poner mode: ‘remote’, los datos del combo recién se cargan cuando uno hace click en el gatillador, por lo tanto es imposible que encuentre el valor que se pone en el setValue.

    La solución es poner mode: ‘local’ y forzar la carga de datos al mostrar el formulario. Así al setear el valor inicial con setValue, ya hay una lista contra la cual comparar.

    Después de varios dias de sufrimiento, lo resolví, muchas gracias, tu ejemplo me sirvió muchísimo.

    Saludos,

    Posted on 07/10/2009 at 22:01
    |
    Victoria says
  10. Gracias por compartir la info.

    Posted on 26/02/2010 at 19:30
    |
    Felipe says
  11. Necesito ayuda urgente, soy nuevo en esto, no tengo el minimo de conocimientos necesarios, pero tengo k hacer un trabajo obligatorio, y me gusta hacer las cosas, asi k espero k me podais ayudar..
    Necesito hacer k un combobox (que cargo desde una base de datos) me muestre unos valores , pero k me envie otros, es decir, k me muestre el nombre, pero me envie el id del nombre, entendeis de k va?
    He tratado con valueField , HiddenName , pero no me trabaja correctamente, no se si es k estoy haciendo algo mal o ni idea , pero es k soy muy malo con los tutoriales, y como no domino bien el ingles..Porfa tirenme una ayuda..

    Posted on 04/05/2010 at 20:31
    |
    el flako says
  12. hola soy novato en EXTjs, quisiera saber como hacer para que el formulario al momento de grabar me valide el combo, Que alla seleccionado una opcion.

    Posted on 23/06/2010 at 18:31
    |
    Luis says
  13. Hola, soy nuevo en la EXT y justamente estoy buscando algo relacionado con este post, espero que me ayude.

    Para Luis, creo que hay un parametro llamado “forceSelection”, si le pones valor true creo que te puede funcionar.

    Espero te sirva, saludos!

    Posted on 02/07/2010 at 18:58
    |
    SeMiAlCruz says

Deja un comentario Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Search our website

  • Inicio
  • Blog
  • Consultor Web
  • Contactar
  • E-Commerce
  • Oridoki
  • Outsourcing
  • Portfolio
  • Sobre Mi
  • Social Media
© Adrià  Cidre Jugo - 2011