Obtener valor Combobox en envío POST con Ext Js

Llevo algunos dias peleado con esta libreria para el sistema de asegurados que estoy haciendo, sin embargo a la hora de cargar remotamente unos combobox para mostrar datos de la base de datos y querer obtener el “value” de la opción seleccionada al enviar el request, cual era mi sorpresa, El Ext Js combobox, no envía por default el valor del atributo valueField, si no el del atributo name.

Este es un combobox tipico en Ext Js


//Definimos un proxy para obtener los datos remotos

var proxyAseguradora = new Ext.data.HttpProxy({
        url: base_url+'/aseguradoras/get',
        method: 'GET'
    	});

//Creamos una definición de los campos que vienen en el Json remoto

var RecordDefAseguradora = Ext.data.Record.create([
    		{name: 'id_aseguradora', mapping: 'id_aseguradora'},
    		{name: 'aseguradora', mapping: 'aseguradora'}
			]);

//Definimos el almacenamiento

var storeToAseguradora = new Ext.data.Store({
        reader: new Ext.data.JsonReader({
            id: 'id_aseguradora',
            root: 'data.results'
        	},RecordDefAseguradora),
        autoLoad: true,
        proxy: proxyAseguradora
    });

//Definimos el combo dentro de un item de un Ext.FormPanel
xtype: 'combo',  
     			id: 'id_aseguradora',
     			name: 'id_aseguradora',
     			hiddenName: 'aseguradoraId',
         		fieldLabel: 'Aseguradora',
     			mode: 'remote',
         		width: 100,
         		triggerAction: 'all',
     			displayField: 'aseguradora',  
     			valueField: 'id_aseguradora',
     			store: storeToAseguradora,
     			emptyText:'Seleccionar',
     			selecOnFocus: true,
     			typeAhead:true,
     			listeners:{
	   				select: function(combo,record,index){
	   					alert(this.getValue());
	   				}
	   				}
 				}

Los datos vienen del servidor así.

{ "data" : { "results" : [ 
{ "aseguradora" : "Metlife",
            "id_aseguradora" : "1"
          },
          { "aseguradora" : "GNP",
            "id_aseguradora" : "2"
          },
          { "aseguradora" : "Allianz",
            "id_aseguradora" : "3"
          },
          { "aseguradora" : "Ike",
            "id_aseguradora" : "4"
          },
          { "aseguradora" : "Otra Prueba",
            "id_aseguradora" : "5"
          }
        ],
      "total" : 5
    },
  "meta" : { "code" : 1,
      "exception" : { "dir" : "",
          "order" : ""
        },
      "message" : null,
      "success" : true
    }
}

El secreto para que esto funcione y se envíe el value del combobox a nuestra petición POST, es que el hiddenName: debe de ser distinto del id, por esta razón se llama aseguradoraId, y listo funciona 😀

This entry was posted in Vida.
8 comments on “Obtener valor Combobox en envío POST con Ext Js
  1. LLevo Dos horas peleando con este combo, y con tu consejo ya pude enviar el codigo que queria… Bueno en realidad hay que agregar, que el valor de hiddenName le pone el nombre al parametro con el cual se envia el codigo(en mi caso) parece que si este valor no esta establecido no le hace caso al valueField.

  2. La neta te rifaste, me la pese un buen tiempo buscando resolver este problemin con el combillo

    Gracias Chaval

Leave a Reply

Your email address will not be published.