Field.controlType="none"

Data de postagem: May 25, 2010 7:57:25 PM

Encontra-se disponível na DESENVOLVE a nova propriedade Field.controlType, que desliga o controle de informações inseridas no campo, permitindo ao desenvolvedor utilizar tags HTML para estilizar o conteúdo dos campos da grade.

A propriedade Field.controlType aceita dois valores:

    • "input": O campo se transforma em input quando está em foco, interpretando qualquer dado inserido pelo usuário como texto puro. É o valor padrão da propriedade.

    • "none": Desliga o controle que limita a entrada de dados, permitindo a criação de campos com código HTML interpretável pelo navegador em um campo do tipo somente leitura.

A flexibilidade oferecida por essa nova funcionalidade exige certos cuidados por parte do desenvolvedor. Para usá-la, é necessário:

    • Definir o estilo CSS do campo, especialmente para sobreescrever estilos não desejados herdados do tema. Upgrades futuros do WebFramework ou alterações nos temas podem exigir que o CSS do campo seja revisto.

    • Não inserir tags que possam quebrar o leiaute da grade.

    • Validar todo o conteúdo enviado pelo cliente para não permitir a injeção de códigos maliciosos por usuários mal-intencionados.

Foi criado um exemplo em "Desenvolvimento > Exemplos > Grades > Grade com campos HTML (controlType=none)" para demonstrar o uso deste recurso.

Esse é um screenshot da grade no modo lista:

Já abaixo encontra-se a imagem no modo formulário:

No momento, o valor "input" está sendo utilizado para representar os vários tipos de controle (input, textarea, checkbox). No futuro, este comportamento será melhorado e outros valores para o controle deverão ser criados, podendo ser editados através de um editor de texto rico e um seletor de cores.

A criação desta propriedade resolve um problema antigo da arquitetura do WebFramework, que era o controle do campo estar fortemente ligado ao tipo do campo. Com esta quebra conceitual, será permitido que um campo string(8) possa ser visualizado/editado de várias formas, como:

    • Entrada de texto (comportamento atual).

    • Entrada de hora

    • Seletor de cores, considerando o valor do campo como um RGB

    • Combo

A propriedade fieldType, que hoje aceita tipos como "hour" e "combo", deve ser preenchida no futuro apenas com tipos reais de dados e o controlType assumirá a função de determinar o controle de entrada.