Jump to content

Dojo (Store / EnhancedGrid)


kn0kit
 Share

Recommended Posts

Boas..

Tou a desenvolver uma aplicacao em Dojo, onde e' utilizada uma enhanced grid.

Os dados utilizados para preenchimento da tabela estao armazenados numa ObjectStore que e' obtida da cache ou do servidor.. A minha questao e', como e' que posso fazer para formatar os dados antes de preencher a tabela. Por exemplo, tenho um array que quero separar e quero criar varias linhas com a informacao que tenho. Como consigo obter os objectos da store, altera-los e criar nova store ou actualizar a que tinha antes?

Nao sei se consegui exprimir correctamente o meu objectivo e tambem nao tenho muitos conhecimentos de Dojo, comecei so' agora a aprender.  😕

Cumprimentos.  😄

Link to comment
Share on other sites

Hmm.. talvez nao tenha conseguido exprimir correctamente a minha questao. Ou sera que ninguem percebe de Dojo!? 🙂

De qualquer maneira, tenho a seguinte store:

myStore = dojo.store.Cache(jsonStore, memoryStore);

E imaginemos que myStore contem um array de objectos do genero:

Object
  >head: Array[3]
    > 0 : "name"
    > 1 : "arr1"
    > 2 : "arr2"
  >list: Array[3]
    > 0 : "Coordenadas"
    > 1 : Array[9]
    > 2 : Array[3]

O objectivo e' criar uma dropdown list com os varios nomes dos objectos, e dependendo do objecto seleccionado na dropdown mostrar uma tabela (enhanced grid) preenchida com arr1 e arr2.

Como e' que consigo aceder a esses dois arrays, de modo a separado-los em varios objectos e criar uma store para enviar para preenchimento da grid?

Cumprimentos..

Link to comment
Share on other sites

Para populares o elemento select, podes criar o elemento em html...

<div id="dropdownbox"></div>

Depois com dojo (dijit)...

// incluir a biblioteca
dojo.require("dijit.form.Select");

// criar o select
var caixa = new dijit.form.Select({
    name: "dropdownbox",
    store: myStore,
    onChange: function() {
        var selecionado = dijit.byId("dropdownbox").get("value");
        
        // fazer mais coisas com base no valor selecionado...
    }
}, "dropdownbox");

// render da caixa
caixa.startup();

Com base no valor selecionado, terás que voltar a consultar a store para ir buscar os outros valores pretendidos...

Referencia: http://dojotoolkit.org/documentation/tutorials/1.6/selects_using_stores/

Link to comment
Share on other sites

Obrigado pela resposta, a ideia era mesmo essa.  😄

So' tenho um problema, a funcao de onChange nao dispara e nao percebo porque.  🙂

Alias, eu ate' estava a utilizar FilteringSelect e funcionava bem, com a excepcao de nao disparar a funcao onChange. Agora alterei para Select e apenas recebo o seguinte erro na consola: Uncaught TypeError: undefined is not a function

Link to comment
Share on other sites

Podes registar eventos nos objectos com dojo.connect()

Antes do startup...

// render da caixa
dojo.connect(caixa, 'onchange', function() {
    var selecionado = dijit.byId("dropdownbox").get("value");
        
        // fazer mais coisas com base no valor selecionado...
});

Referencia: http://dojotoolkit.org/reference-guide/1.7/dojo/connect.html

Link to comment
Share on other sites

Grande ajuda!!  😉 Ja consegui meter uma FilteringSelect para seleccionar os items e dependendo do item seleccionado mostrar informacao numa TextBox e na Grid. 😛

Agora surgiu-me outro problema/duvida...como e' que ao editar o conteudo da TextBox ou da Grid consigo salvar as alteracoes no servidor!? Isto e'...para preencher a grid, criei outra store (o que talvez nao tenha sido a melhor ideia, mas nao descobri outra) e na textbox apenas inseri o conteudo no campo value, logo nao tenho nenhum metodo que me permita salvar as alteracoes na store original!

Alguma ideia diferente? Estou a ir pelo caminho errado?

Cumprimentos..

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.