ExtJS cambia el formato de datos POST del componente de formulario

Quiero poder cambiar la forma en que un componente ExtJS formatea los datos POST.

Para ser más específico, estoy usando la extensión de usuario MultiSelect. Los datos de la publicación están formateados con un solo parámetro con valores separados por comas.

es decir, multiSelect = 1,2,3

La forma en que necesito manejar esto es tener múltiples atributos idénticos

es decir, multiSelect = 1 multiSelect = 2 multiSelect = 3

El componente MutliSelect es el siguiente

var multiselect = new Ext.ux.Multiselect({
    name              :  'multiselect',
    fieldLabel        :  'Multiselect',
    dataFields        :  ['code', 'desc'], 
    data              :  [['1', 'One'], ['2', 'Two'], ['3', 'Three'], ['4','Four'], ['5', 'Five']],
    valueField        :  'code',
    displayField      :  'desc',
    width             :  150,
    height            :  150,
    allowBlank        :  true
});

preguntado el 09 de enero de 11 a las 04:01

¿Está utilizando esta selección múltiple? figtreesystems.com/ext/ext-ux/1.1/Multiselect/Multiselect.html ¿Eso significa que está utilizando Ext 1.1? -

Estoy usando multiselect, pero la versión más nueva. El código anterior fue el ejemplo dado, pero debo haber copiado de la versión incorrecta ... -

2 Respuestas

No es 100% que esto funcione, pero sospecho que hacer algo como esto debería:

Ext.override(Ext.ux.Multiselect, {
  getValue: function() {
    var returnArray = [],
      selectionsArray = this.view.getSelectedIndexes(),
      i;
    for (i = 0; i < selectionsArray.length; i++) {
     returnArray.push(this.store.getAt(selectionsArray[i]).get(((valueField != null)? valueField : this.valueField)));
    }
    return returnArray;
  }
});

El envío de una matriz debería hacer que se use normal Ext.urlEncode comportamiento.

Respondido el 09 de enero de 11 a las 09:01

el valor del atributo de datos de publicación debe ser un solo número. Intenté cambiarlo a una matriz pero aún no se maneja correctamente. Gracias por la sugerencia, hay muchas situaciones que funcionarían: neolaser

Si Ext.urlEncode encuentra una matriz para su valor, generará foo=a&foo=b. Lo que está pasando en este momento es que el getValue La función devuelve una cadena. - wombleton

Mi problema es que getValue () también se está usando en otro lugar (en una extensión de usuario) y cambiarlo a una matriz también lo rompe. neolaser

Do Ext.ux.MyMultiSelect = Ext.extend(Ext.ux.MultiSelect, { getValue: ... }) y usar eso en su lugar? - wombleton

Configure el componente para que tenga un delimitador nulo, es decir, delimitador: nulo (consulte la documentación de la api)

Respondido 26 Abr '12, 19:04

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.