Ir para conteúdo


Foto

[Ajuda] getGroupString em uma Lista


  • Por favor, faça o login para responder
1 resposta neste tópico

#1 Mano008

Mano008

    Iniciante

  • Membros
  • Pip
  • 1 posts

Postado 25 August 2010 - 14:05

Estou com problema em como montar os grupos de uma lista, segue como esta meu index.js:

var store = new Ext.data.Store({
	fields: ['nome', 'sobrenome', 'grupo'],
	proxy: {
		type: 'ajax',
		url: 'database.xml',
                reader: {
			type: 'xml',
			record: 'usuario'
		}
	},
	getGroupString: function(record) {
		return record.get('grupo');
	},
	autoLoad: true
})
e o database.xml:
<usuarios>
	<usuario>
		<name>Julio</name>
		<sobrenome>Benesh</sobrenome>
		<grupo>1</grupo>
	</usuario>
	<usuario>
		<name>Tania</name>
		<sobrenome>Ricco</sobrenome>
		<grupo>2</grupo>
	</usuario>
	<usuario>
		<name>Odessa</name>
		<sobrenome>Steuck</sobrenome>
		<grupo>1, 2</grupo>
	</usuario>
</usuarios>

Ele exibe a lista certo, sendo que fica separado em 3 grupos: '1', '2', '1, 2'. Sendo que o que estou querendo é que 'Odessa' apareça no grupo 1 e no 2 em vez de aparecer no grupo '1, 2'.

Espero que tenha conseguido expressar minha duvida, agradço dês de já qualquer ajuda =D
E se não for pedir demais, queria saber como faço um CRUD nesse xml.

#2 Nom4d3

Nom4d3

    Member Avançado

  • Membros
  • PipPipPip
  • 952 posts
  • LocationAraras/SP/Brasil

Postado 08 September 2010 - 15:55

Para exibir 2x o mesmo registro numa lista, creio q a unica saida seja duplicar o registro. Vc pode fazer isso do lado do servidor ou via js mesmo.

algo assim deve funcionar pro seu caso:

var store = new Ext.data.Store({
    fields: [
        { name: 'nome', type: 'string' },
        { name: 'sobrenome', type: 'string' },
        { name: 'grupo', type: 'string', convert: function (v, rec) {
            v.replace(" ", ""); //remove os espacos
            arr = v.split(','); //explode os grupos para um array

            // Caso esteja em mais de 1 grupo, entao cria novos registros
            if (arr.length > 1) {
                rec.grupo = arr[0];
                for (i=1; i < arr.length; i++) {
                    temp = rec;
                    temp.grupo = arr[i];
                    store.add(temp);
                }
            }
        }}
    ],
    proxy: {
        type: 'ajax',
        url: 'database.xml',
        reader: {
            type: 'xml',
            record: 'usuario'
        }
    },
    getGroupString: function(record) {
        return record.get('grupo');
    },
    autoLoad: true
});

Não testei e nem faço ideia se vai funfar :)
Com certeza isso ae terá um bom gasto de processamento na hora de dar loading no store. entao eu recomendaria fazer isso do lado do servidor e ja trazer inclusive ordenado pro cliente.




0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos