Talvez voce possa usar o filterFunction como no exemplo abaixo:
<code>
// adicionado um evento ao modificar o textFild
this.textFilter.addEventListener(Event.CHANGE, filter);
...
this._lista.dataProvider.filterFunction = filterFunction;
...
/* aqui é dado o evento de filtrar*/
public function filter(event:Event):void{
this._lista.dataProvider.refresh();
}
public function filterFunction(item:Object):Boolean {
var minSlider:uint = this.textFilter.text.length;
if (minSlider == 0) return true;
var string:String = item.label.substring(0,minSlider);
// condicao
if (string.toLowerCase() ==
this.textFilter.text.toLowerCase()) {
return true;
} else {
return false;
}
}
</code>
Assim toda vez que for feito um refresh(), uma modificacao no conteudo
do textField, a lista será iterada e voce define quem dera
apresentado.
On 27 jul, 18:12, Fernando Ghisi <[email protected]> wrote:
> Parece que dá pra usar a estratégia do item B, através de um DataDescriptor
> (http://livedocs.adobe.com/flex/3/langref/mx/controls/treeClasses/Defa...)
> customizado. Parece ser esse o "caminho das pedras".
>
> 2009/7/27 Fernando Ghisi <[email protected]>
>
>
>
>
>
> > Vou tentar explicar meu problema.
>
> > Tenho duas classes, Usuario e Papel. A classe Usuario tem dois atributos,
> > “nome” e “children” (array de papeis); a classe Papel tem também um atributo
> > “nome” e um “children” (array de usuários).
>
> > No modelo da minha aplicação tenho dois ArrayCollection, um com a lista de
> > usuários e outro com a lista de papéis.
>
> > Em determinado ponto do sistema, tenho uma Tree, em que o dataProvider é
> > hora o ArrayCollection de usuários (visualização por usuários) e hora o
> > ArrayCollection de papéis (visualização por papéis). O labelField dessa Tree
> > é “nome”, que é comum ao objeto Usuario e a ao Papel (não precisando ser
> > alterado quando mudo o dataProvider).
>
> > Estando na visão por usuários, o segundo nível da árvore mostrará seus
> > papéis (que estão dentro do array “children” presente em cada objeto
> > Usuario). Estando na visão por papéis, o segundo nível da árvore mostrará
> > seus usuários (que estão dentro do array “children” presente em cada objeto
> > Papel).
>
> > Até ai tudo bem, funciona perfeitamente. O problema é que eu não consigo
> > parar no segundo nível da Tree e a aplciação entra em looping infinito ao
> > tentar apresentar os dados da Tree com essa estratégia. Por exemplo, na
> > situação da visão por usuários, o segundo nível da árvore mostrará seus
> > papéis (que estão dentro do array “children” presente em cada objeto
> > Usuario), mas cada papel mostrará também seus usuários (que estão dentro do
> > array “children” presente em cada objeto Papel), que por sua vez mostrarão
> > seus papéis.... e assim por diante.
>
> > E aí, como eu poderia fazer para evitar isso? Pensei em duas estratégias,
> > mas não sei se é possível fazer e não encontrei nada pesquisando no Google:
>
> > a) Existe alguma forma de fazer com que a Tree use o dataprovider somente
> > até o segundo nível (por exemplo, na visão de usuários, mostraria somente os
> > usuários e seus papéis, sem utilizar o children dos objetos papéis)?
>
> > b) Ou existe alguma forma de usar hierarquia de um dataProvider de
> > ArrayCollection sem ter que chamar o atributo do objeto pai de “children”?
> > Se der (que eu saiba não dá), seria só eu chamar o array de papéis de
> > “papeis” no objeto Usuario e o de usuários de “usuarios” no objeto Papel e
> > passar essa informação de alguma forma pra Tree (que ao invés deutilziar o
> > atributo "children" pra fazer a hierarquia, utilizaria um atributo com o
> > nome informado) – daí o dataprovider não entraria em recursão por causa do
> > atributo “children” que estava presente nos dois objetos.
>
> > Deu pra entender alguam coisa, ou ficou confusa a minha explciação? Alguéms
> > abe se tem como fazer uam das duas cosias, ous e tem ainda outra maneira de
> > fazer isso?
>
> > Obs.: Não quero utilizar XML (que já resolveria o problema).
>
> > []s
>
> > Fernando
>
> --
> Fernando Benedet Ghisi
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---