Estou fazendo uma aplicação que lida com vários dados e que algumas
pessoas podem modificar ao mesmo tempo.
Um problema que encontrei foi o cursor do relógio toda vez que preciso
atualizar a lista na tela.
Para resolver isso, resolvi manter todos os dados na memória ram! Pelo
menos é o que estou tentando implementar. Provavelmente virão outras
sugestões, eu aceito. Mas no entanto gostaria de entender o problema
da minha tentativa.
Tenho um objeto que contém um Remote Object. Sempre que esse remote
object me retorna dados do banco ( dados atualizados ) eu disparo um
evento que é capturado por outro objeto.
Essa parte está correta! Pelo debug eu vejo que no evento vem os dados
corretamente.
Esse outro objeto (FavorecidosAC) contém um Array Collection. Quando o
evento é disparado, junto com o evento vem um array collection com os
dados atualizados. Eu atualiza o ac do meu objeto.
package components.auxiliar
{
import mx.collections.ArrayCollection;
import mx.controls.Alert;
[Bindable]
public class FavorecidosAC
{
[Bindable] public var ac:ArrayCollection = new ArrayCollection;
public function FavorecidosAC(source:Array=null)
{
var obj:CacheObj =
CacheDP.getCacheObj('listaFavorecidos');
if (!obj) Alert.show('erro obj nulo');
obj.addEventListener('listaFavorecidosResult',
function(event:CacheEvent)
{
var arr:Array = event.dp.source;
this.ac = new ArrayCollection(arr);
Alert.show('listaFavorecidos atualizado');
//brakpoint aqui
});
}
}
}
E ainda tenho um datagrid onde favac é do tipo FavorecidoAC
favac = new FavorecidosAC;
<mx:DataGrid dataProvider="{favac.ac}" >
<mx:columns>
<mx:DataGridColumn headerText="nome"
dataField="nome" />
</mx:columns>
</mx:DataGrid>
Quando executo minha aplicação passa-se um tempo e em seguida o Alert
é disparado ('listaFavorecidos atualizado') no entando meu datagrid
não atualiza os dados. Na linha anterior do Alert eu coloquei um
breakpoint e no debug eu vejo meu this.ac atualizado. Mas no corpo da
aplicação, tenho um botão e no click dele
<mx:Button y="200">
<mx:click>
<![CDATA[
favac.ac.refresh();
favac.ac; //brakpoint aqui
]]>
</mx:click>
</mx:Button>
nesse contexto, no debug, quando olho minha propriedade ac, ela está
vazia. Não atualizada como esperado.
--
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev