Foro

Lectura de tags repetidos de un xml - grid

0
Hola,
Me gustaría saber como leer tags repetidos de un xml usando un grid. En el ejemplo de abajo quiero mostrar todos los teléfonos de la persona en un grid, pero solo me muestra el primer teléfono usando "dataIndex: 'telefono > numero'". Me podrían ayudar con esto por favor. Muchas gracias!.Steve.

Ejemplo:

xml:
<persona>
      <nombre>Fulano</nombre>
      <empresa>
          <id>945123</id>
      </empresa>
      <telefono>
          <numero>999999</numero>
      </telefono>
      <telefono>
        <numero>888888</numero>
      </telefono>
</persona>

 

stores.storePersona = new Ext.data.Store({       
  autoLoad: false,       
  proxy: new Ext.data.HttpProxy(            
    {url: 'http://localhost:8080/SVOC-Project/TestServlet'}       
  ),        
  fields: [            
    {name: 'nombre'},  --> OK            
    {name: 'empresa > id', type: 'int'}, --> OK            
    {name: 'telefono> numero', type: 'int'}   ?????????????????????        
  ]    
})

});

grids.persona = new Ext.grid.GridPanel({    
  store:stores.storePersona ,    
  columns: [       
    {            
      id: 'idTelefono',            
      header: 'Telefono',            
      dataIndex: 'telefono > numero',  ???????        
    },    
  ],
});




0
Sucede que le estas indicando en el modelo del store que el campo telefono sea de tipo entero, por lo tanto solo esta tomando un valor.

Lo que te recomiendo hacer es utilizar la función convert dentro de la definición del field y tu manualmente sacar los dos valores del registro que se está procesando.

Saludos
Steve Left: Gracias por la ayuda. Ahora estoy usando la función convert como me dijiste y funciona, pero no se como recuperar los valores en el dataIndex de un grid.Ejemplo: 25/01/2015
Steve Left: telefonoLista = new Ext.data.XmlReader({ record: 'telefono', fields: [ {name: 'numero', type: 'int'} ] }); stores.storePersona = new Ext.data.Store({ autoLoad: false, proxy: new Ext.data.HttpProxy( {url: 'http://localhost:8080/SVOC-Project/TestServlet'} ), fields: [ {name: 'nombre'}, {name: 'empresa > id', type: 'int'}, {name:'telefono',convert:function(v,n){ return telefonoLista.readRecords(n).records; }}, ] }) }); grids.persona = new Ext.grid.GridPanel({ store:stores.storePersona , columns: [ { id: 'idTelefono', header: 'Telefono', dataIndex: 'telefono > numero', ??????? }, ], }); 25/01/2015
0
telefonoLista = new Ext.data.XmlReader({    record: 'telefono',    fields: [        {name: 'numero', type: 'int'}    ]   });
stores.storePersona = new Ext.data.Store({         autoLoad: false,         proxy: new Ext.data.HttpProxy(                {url: 'http://localhost:8080/SVOC-Project/TestServlet'}         ),          fields: [                {name: 'nombre'},              {name: 'empresa > id', type: 'int'},               {name:'telefono',convert:function(v,n){                return telefonoLista.readRecords(n).records;    }},  ]    })
});
grids.persona = new Ext.grid.GridPanel({      store:stores.storePersona ,      columns: [           {                  id: 'idTelefono',                  header: 'Telefono',                  dataIndex: 'telefono > numero',  ???????            },      ],});

¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook

Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.