• Publicidad (ayudanos a mantener el Foro haciendo un click sobre la misma)
  • Cuixer, una forma de administrar páginas web que nunca viste!

 Tema solucionado enviar resultado Ext.Ajax.Request a GridPanel

Foros generales de ayuda Ext 3.0.

Ext.foro.Nuevo
Mensajes: 12
Registrado: 04 Feb 2011, 14:07
NotaPublicado: 19 Ene 2012, 14:13
buenas tardes,

como puedo rellenar un gridpanel con el resultado de un Ajax.Request el cual obtiene una lista en formato Json
esta es mi peticion Ajax
app.asig_cartera_asignaciones.data = {};

var params = { 'asignacion': Ext.getCmp("asignacion").getValue(),
'cedula': Ext.getCmp("cedula").getValue(),
'id_capa': Ext.getCmp("id_capa").getValue()
};

var conf = {
url: 'Service.svc/lista_asignaciones_filtro',
params: params
};

Ext.Ajax.request({
url: conf.url,
method: "POST",
headers: { "Content-Type": "application/json" },
params: Ext.encode(conf.params),
success: function (response) {
app.asig_cartera_asignaciones.data = Ext.decode(response.responseText);
console.log(app.asig_cartera_asignaciones.data.d);
},
failure: function (response) {
app.asig_cartera_asignaciones.data = Ext.decode(response.responseText);

alert(app.asig_cartera_asignaciones.data);
alert("hay error");
}
});

revisando el console veo los datos que me devuelve, pero como hago para presentar esos datos en un gridpanel.
les agradezco la ayuda que me puedan prestar...
Para no ver esta publicidad, debes ser usuario del Foro.
Publicidad (ayudanos a mantener el Foro haciendo un click sobre la misma)


Cuixer, una forma de administrar páginas web que nunca viste!


Ext.foro.Moderador
Mensajes: 240
Registrado: 11 Feb 2011, 00:19
Ubicación: Venezuela
NotaPublicado: 19 Ene 2012, 14:37
No entiendo para que necesitas un Ajax.request para llenar un grid, lo podrias aclarar? No se si se puede hacer xq el ajax.request no necesita un store a diferencia del gridpanel. Con el store puedes cargar los datos en el grid sin necesidad de usar ajax.request que como te digo no se si se pueda utilizar.
Busca en el Foro antes de preguntar o lee la Documentación
Desarrollo Web y Aplicaciones Consultar

Ext.foro.Nuevo
Mensajes: 12
Registrado: 04 Feb 2011, 14:07
NotaPublicado: 19 Ene 2012, 14:43
desarro3 escribió:No entiendo para que necesitas un Ajax.request para llenar un grid, lo podrias aclarar? No se si se puede hacer xq el ajax.request no necesita un store a diferencia del gridpanel. Con el store puedes cargar los datos en el grid sin necesidad de usar ajax.request que como te digo no se si se pueda utilizar.


el Ajax.request llama a un metodo de un webservices el cual me retorna una lista, esta lista es la que necesito mostrar en un grid

Ext.foro.Moderador
Mensajes: 240
Registrado: 11 Feb 2011, 00:19
Ubicación: Venezuela
NotaPublicado: 19 Ene 2012, 15:43
Lo que veo es que pasas una url de donde obtienes los datos, esto lo puedes hacer de igual forma directamente con un store, siempre y cuando te devuelva los datos en el formato adecuado.
Busca en el Foro antes de preguntar o lee la Documentación
Desarrollo Web y Aplicaciones Consultar

Ext.foro.Nuevo
Mensajes: 12
Registrado: 04 Feb 2011, 14:07
NotaPublicado: 19 Ene 2012, 16:46
desarro3 escribió:Lo que veo es que pasas una url de donde obtienes los datos, esto lo puedes hacer de igual forma directamente con un store, siempre y cuando te devuelva los datos en el formato adecuado.


eso lo se pero con el JsonStore me genera error ya que hace la peticion como GET y no como POST y en el Ajax si me esta devolviendo los datos lo que no encuentro es como enlazarlos al gridpanel para que le sea visual al usuario

Ext.foro.Moderador
Mensajes: 240
Registrado: 11 Feb 2011, 00:19
Ubicación: Venezuela
NotaPublicado: 19 Ene 2012, 23:21
El jsonstore hace la peticion por post (o por lo menos a mi me funciona asi), lo que me ha pasado es que ocaciones cuando lo tenia mal definido o se ejecutaba la peticion pero esta no iba a ningun lado por algun error se ejecutaba por get (o eso era lo que mostraba la consola). Estuve revisando la documentacion pero para jsonstore no parece tener algun atributo donde se especifique como hace la peticion. Si ya vez los datos podrias construir un arraystore y luego ese store se lo pasas al grid panel, nunca lo he hecho pero quiza podria ser una solución aunque puede que no sea la mejor opcion.

Código: Seleccionar todo
var store = new Ext.data.ArrayStore({
    // store configs
    autoDestroy: true,
    storeId: 'myStore', //Este es el nombre por el que vas a hacer referencia desde el gridpanel a este store
    // reader configs
    idIndex: 0, 
    fields: [ //Lo que te devuelve la peticion ajax debe estar en este formato para que te funcione, en caso contrario deberas adaptarlo.
       'company',
       {name: 'price', type: 'float'},
       {name: 'change', type: 'float'},
       {name: 'pctChange', type: 'float'},
       {name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}
    ]
});


Luego en el gridpanel en el atributo store debes colocar el mismo nombre que definiste en storeId.

Esto nunca lo he probado, la base esta en que definas bien el contenido de fields y que coloque el nombre del store correctamente, porque si no nunca se te van a mostrar los datos en el gridpanel.

Espero te sea de ayuda. Saludos
Busca en el Foro antes de preguntar o lee la Documentación
Desarrollo Web y Aplicaciones Consultar

Ext.foro.Nuevo
Mensajes: 12
Registrado: 04 Feb 2011, 14:07
NotaPublicado: 20 Ene 2012, 12:50
desarro3 escribió:El jsonstore hace la peticion por post (o por lo menos a mi me funciona asi), lo que me ha pasado es que ocaciones cuando lo tenia mal definido o se ejecutaba la peticion pero esta no iba a ningun lado por algun error se ejecutaba por get (o eso era lo que mostraba la consola). Estuve revisando la documentacion pero para jsonstore no parece tener algun atributo donde se especifique como hace la peticion. Si ya vez los datos podrias construir un arraystore y luego ese store se lo pasas al grid panel, nunca lo he hecho pero quiza podria ser una solución aunque puede que no sea la mejor opcion.

Código: Seleccionar todo
var store = new Ext.data.ArrayStore({
    // store configs
    autoDestroy: true,
    storeId: 'myStore', //Este es el nombre por el que vas a hacer referencia desde el gridpanel a este store
    // reader configs
    idIndex: 0, 
    fields: [ //Lo que te devuelve la peticion ajax debe estar en este formato para que te funcione, en caso contrario deberas adaptarlo.
       'company',
       {name: 'price', type: 'float'},
       {name: 'change', type: 'float'},
       {name: 'pctChange', type: 'float'},
       {name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}
    ]
});


Luego en el gridpanel en el atributo store debes colocar el mismo nombre que definiste en storeId.

Esto nunca lo he probado, la base esta en que definas bien el contenido de fields y que coloque el nombre del store correctamente, porque si no nunca se te van a mostrar los datos en el gridpanel.

Espero te sea de ayuda. Saludos



Gracias llave por su respuesta, ya logre solucionar el detalle claro que tu solución fue un gancho para lograrlo, les adjunto la peticion ajax para que otros usuarios que necesiten desarrollar lo mismo sepan
Código: Seleccionar todo
    var json;

    // parametros
    var params = { 'cedula': Ext.getCmp("cedula").getValue() };

    var conf = {
        url: 'Service.svc/lista_empleados_filtro',
        params: params
    };

    Ext.Ajax.request({
        url: conf.url,
        method: "POST",
        headers: { "Content-Type": "application/json" },
        params: Ext.encode(conf.params),
        success: function (response) {
            //alert("esta entrando al success");           
            json = Ext.decode(response.responseText);
        },
        failure: function (response) {
            alert("Se produjo error con el servidor");
        }
    });

    var store = new Ext.data.JsonStore({
        idProperty: 'id',
        fields: [
            { name: 'id', mapping: 'id' },
            { name: 'nombre', mapping: 'nombre' },
            { name: 'direccion', mapping: 'direccion' }
        ],
        root: 'd',
        data: json
    });

Volver a Ext 3.0: Ayuda





  • Publicidad (ayudanos a mantener el Foro haciendo un click sobre la misma)
  • Cuixer, una forma de administrar páginas web que nunca viste!