quinta-feira, 16 de julho de 2009

ASP.NET - Controle DList

EDITADO EM 03/03/2010
  • Correção de falhas
  • Adicionado suporte a vários tipos de itens, cada um com um template próprio.
Sei que não tem muitas informações sobre a utilização do componente, mas quem quiser saber mais basta perguntar.


EDITADO em 03/08/2009
  • O código do componente está mais organizado.
  • Adicionado o LayoutTemplate.

Constantemente tenho necessidade de criar uma interfance com uma lista de cadastro dinâmica, conforme a imagem abaixo. Onde o número de alternativas pode variar de 1 até N.



Resolvi então criar um Custom Control, que chamei de DList (Dynamic List), uma espécie de DataList sem DataSource.

Então vamos colocar a mão na massa e criar interfaces utilizando o componente.
  1. Abra o Visual Studio 2008, e crie um novo Website, utilizando a linguagem C#.
  2. Faça download de um projeto de exemplo com as classes do componente DList aqui.
  3. Copie a pasta DList de dentro da pasta App_Code do projeto de exemplo para a pasta App_Code do seu projeto.
  4. Adicionamos então uma referência para uma dll utilizada pelas classes, clique com o botão direito sobre a solução, em seguida clique em "Add reference", localize o item "System.Design" e clique em "Ok".
Pronto, agora podemos utilizar o controle DList.
Para utilizá-lo em alguma página, registre o namespace adicionado a seguinte linha no início do arquivo .aspx
<@ Register Namespace="CustomControls" TagPrefix="cc" %>
Adicione o controle na página com a seguinte linha:
<cc:DList runat="server" ID="DList1" />
O componente suporta 3 templates:
  • LayoutTemplate, utilizado para layout do componente, coloque um PlaceHolder para determinar o local onde os itens serão adicionados;
  • ItemTemplate, utilizado para a criação de cada item;
  • SeparatorTemplate, adicionado entre os itens.
O componente possui 3 eventos:
  • ItemIndexChange, disparado sempre que há alteração na posição de um elemento, facilitando a atualização de numeradores.
  • ItemCreate, disparado sempre que um item é criado, permitindo adição de componentes dinamicamente.
  • ItemCommand, disparado sempre que um comando "borbulha" de algum componente interno.
A classe DListItem, possui uma propriedade chamada ViewStateData, que pode ser utilizada para armazenar informações no viewState do item, evitando o uso de hidden fields dentro do template.
Atualmente o controle atende às minhas necessidades, caso eu adicione novas funcionalidades ou faça modificações, postarei o código atualizado.
Estou a disposição para dúvidas, sugestões, pedidos, ou discutir abordagens para essa situação.

0 comentários:

Postar um comentário