• 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 leer datos de una variable json

Foros generales de ayuda Ext 3.0.

Ext.foro.Nuevo
Mensajes: 12
Registrado: 04 Feb 2011, 14:07
NotaPublicado: 19 Ene 2012, 12:23
buenos dias compañeros, estoy realizando un Ajax.request el cual me devuelve una lista, necesito leer esos datos y presentarlos en un grid.

este es el codigo que estoy implementando y no logro crear un store con esos datos para enlazarlo al gridpanel
var data = {};
// parametros
var params = { 'asignacion': Ext.getCmp("asignacion").getValue(),
'cedula': Ext.getCmp("cedula").getValue(),
'id_capa': Ext.getCmp("id_capa").getValue()
};

var conf = {
url: 'servicio.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) {
data = Ext.decode(response.responseText);

var fields = Ext.data.Record.create([
{ name: 'id_asignacion' },
{ name: 'cap_nombre' },
{ name: 'ciu_nombre' },
{ name: 'asi_custcode' },
{ name: 'asi_referenciapago' },
{ name: 'asi_identificacion' },
{ name: 'asi_nombre' },
{ name: 'asi_celular' },
{ name: 'asi_fechaapertura' },
{ name: 'asi_saldoinicial' },
{ name: 'asi_diasmorainicial' }
]);

var reader = new Ext.data.JsonReader({
totalProperty: "total",
root: "d",
idProperty: "id_asignacion"},
fields
);

app.asig_cartera_asignaciones.store_grid = new Ext.data.Store({
data: data,
reader: reader
});
app.asig_cartera_asignaciones.store_grid.load();
},
failure: function (response) {
data = Ext.decode(response.responseText);

alert(data);
alert("hay error");
}
});

// presento lista
app.asig_cartera_asignaciones.get_grid();

la variable data obtiene la lista devuelta por el servidor en formato json lo que necesito saber es como construir un store para enlazarlo a un gridpanel y presentar los datos ya que lo que implemento no me funciona o que forma puedo leer la lista de la variable data y presentarlos 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!

Avatar de Usuario
Ext.foro.Moderador
Mensajes: 353
Registrado: 17 Ago 2009, 12:06
NotaPublicado: 20 Ene 2012, 17:13
El problema que veo, sino me equivoco, es que quieres cargar tu store con datos que aun no existen, recuerda que el ajax es asincronico por lo que cuando llegas a:

app.asig_cartera_asignaciones.store_grid = new Ext.data.Store({
data: data,<---aqui aun no existen los valores de data
reader: reader
});

para enviar parámetros al lado del servidor al momento de cargar el store puedes usar tanto:

Código: Seleccionar todo
store.setBaseParam('parametro',valor);

store.baseParams.parametro = valor;


o

Código: Seleccionar todo
store.load({
     params:{
           parametro: valor
       }
});


ahora bien, si en realidad necesitas crear el store según los datos que regresas del JSON, es decir no sabes como se van a llamar los campos de tu store, que NO es lo mismo que cargar los datos del store con valores desconocidos, entonces toda la creación del store debe estar en el success de tu Ajax, pero a la vez tu Ajax debe estar en el listener al 'afterrender' de tu pagina porque tomas valores de componentes que aun no existen, como son:

Código: Seleccionar todo
var params = {
  'asignacion': Ext.getCmp("asignacion").getValue(),
  'cedula': Ext.getCmp("cedula").getValue(),
  'id_capa': Ext.getCmp("id_capa").getValue()
};


estos componentes no existen al momento de que la pagina interpreta esas lineas o me equivoco?

espero haberte ayudado (^_^)

Ext.foro.Nuevo
Mensajes: 12
Registrado: 04 Feb 2011, 14:07
NotaPublicado: 21 Ene 2012, 13:13
tokkaido escribió:El problema que veo, sino me equivoco, es que quieres cargar tu store con datos que aun no existen, recuerda que el ajax es asincronico por lo que cuando llegas a:

app.asig_cartera_asignaciones.store_grid = new Ext.data.Store({
data: data,<---aqui aun no existen los valores de data
reader: reader
});

para enviar parámetros al lado del servidor al momento de cargar el store puedes usar tanto:

Código: Seleccionar todo
store.setBaseParam('parametro',valor);

store.baseParams.parametro = valor;


o

Código: Seleccionar todo
store.load({
     params:{
           parametro: valor
       }
});


ahora bien, si en realidad necesitas crear el store según los datos que regresas del JSON, es decir no sabes como se van a llamar los campos de tu store, que NO es lo mismo que cargar los datos del store con valores desconocidos, entonces toda la creación del store debe estar en el success de tu Ajax, pero a la vez tu Ajax debe estar en el listener al 'afterrender' de tu pagina porque tomas valores de componentes que aun no existen, como son:

Código: Seleccionar todo
var params = {
  'asignacion': Ext.getCmp("asignacion").getValue(),
  'cedula': Ext.getCmp("cedula").getValue(),
  'id_capa': Ext.getCmp("id_capa").getValue()
};


estos componentes no existen al momento de que la pagina interpreta esas lineas o me equivoco?

espero haberte ayudado (^_^)


disculpe compañero esta blog es con relación al blog anterior al cual ya me diste una base para la solución y ya se encuentra solucionado, de todas formas gracias... ya lo marco como solucionado, para los compañeros la solución a este se encuentra en el blog enviar resultado Ext.Ajax.Request a GridPanel

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!