Flex: Filtrando dados em tempo real

8 Comentários

Olá pessoal, hoje vou mostrar um exemplo muito bacana, que é de alta utilidade e bem simples de se fazer.
Trata-se de um filtro de dados que estão em um datagrid, e aproveitando este exemplo utilizei como “recheio” nomes de desenvolvedores (e feras!) que utilizam a tag #soudev, se você é programador/desenvolvedor e não conhece ainda a tag, sugiro primeiro que você entre no site #soudev e fique por dentro do que tá rolando e em segundo que siga esse pessoal que está recheando o datagrid, vai te agregar muita informação, conhecimento e ótimas amizades!

Bom, vamos lá, a aplicação está inteira comentada, aqui vou dar um simples passo a passo do que acontece.
Primeiramente, a propriedade filterFunction nos permite a criação e aplicação de filtros, tanto de dados em um ArrayCollection quanto de um XMLListCollection, é preciso que haja critérios para busca.

No exemplo, o ArrayCollection, com todos os nossos registros, é criado logo no início da aplicação, sendo ‘chamado’ na função init() por meio da propriedade creationComplete.

Logo após, indicamos pra propriedade filterFunction, que os critérios de busca estão na função especificada: buscaDev, e atualizamos o datagrid.

Já na função buscaDev, os dados são tratados como caixa baixa, ou seja, as strings estão minúsculas (método: toLowerCase()), e o que é digitado no textInput é procurado no item name do datagrid, e quando encontrado é retornado true, caso contrário false.

Na parte MXML da aplicação, apenas indicamos no datagrid que os dados virão do ArrayCollection, pela propriedade: dataProvider (dataProvider=”{_nomesDevs}”).
E já no campo de busca, quando é digitado alguma letra, o textInput atualiza o ArrayCollection com a propriedade change (change=”{_nomesDevs.refresh()}”).

Simples e muito útil.
Clique aqui para acessar o exemplo, o código-fonte está aberto, veja e baixe o exemplo, que está inteiramente comentado.

Espero que seja de utilidade pra você, e em caso de dúvidas, por favor, sinalize aqui nos comentários!!

Boa semana e forte abraço!