Relacionando CFSELECTs em Flash

Uma das principais novidades do ColdFusion 7 é a possibilidade de criar formulários em Flash. É uma grande sacada que traz bons benefícios.

Relacionar dois select HTML (menu drop-down), consiste em você primeiro selecionar uma opção no primeiro menu, e no segundo, as opções forem subdivisões do selecionado no primeiro menu. Exemplo: estado-cidade, onde você primeiro seleciona um estado brasileiro, e no menu seguinte você pode selecionar dentre as cidades daquele estado, sem a necessidade de atualizar a página, isto é, sem mandar o ID do estado para o servidor e este retornar as cidades.

Quando isso era necessario, ou os programadores escreviam sua própria função JavaScript ou utilizavam a custom tag 2SelectsRelated (ou algo assim). Há casos até de 3 (3SelectsRelated) ou mais menus co-relacionados. Tudo para evitar refresh na página.

É claro que quem já programa aplicações RIA em Flash eventualmente utiliza esse recurso e programa seu pequeno código ActionScript para lidar com esse recurso. E se o ColdFusion 7 faz formulários em Flash, e tais formulários têm um menu select, por que não utilizar esse recurso nesse caso também?

Kai König não só implementou esse recurso, como também utilizou uma maneira bem interessante de separar o código ActionScript do evento onChange.

Ele utilizou a tag cfsavecontent para criar uma variável de texto que continha o próprio código ActionScript de relacionar os dois menus select gerados e populados (através de consulta ao banco de dados) dinamicamente pelo ColdFusion.

Aliás, seja em Flash ou em ActionScript, melhor do que escrever seu código diretamente no evento, é criar uma função e chamar a função no evento; ou, como nesse caso, pelo menos separar o código ao invés de espremer um monte de código em um atributo.


2 Comments on “Relacionando CFSELECTs em Flash”

  1. Neto Leal disse:

    Alex, eu ainda não brinquei muito com o CF7 e não o tenho instalado aqui na minha máquina pois preciso aumentar a memória dela ainda.
    Btw, não dá pra fazer esse tipo de ligação usando Bindings assim como é feito em Flex ?

  2. Olá Neto, quem fez o post fui eu, não o Alex. 🙂

    Creio que os bindings de maneira fácil (mx:Bindings) como no Flex não há. Acho que só se programar em ActionScript. O que código proposto já é relativamente simples. O que acha?