Busca Online:
 

Seja bem vindo(a) Visitante, voc no est logado deseja logar
na comunidade ASPNETi.COM e participar de servios e promoes ? clique aqui.

Criando um Server Control



Data Publicação: 31/8/2006 15:35:00
Total de visualizações: 4959

comente
Diminuir o tamanho das letras Aumentar o tamanho das letras


ASP.NET – Criando um Server Control

 

Veremos neste artigo como criar um server control que pode ser usado em sua aplicação.

 

O que é um Server Control?

 

Server Control nada mais é do que um controle que roda no servidor, no caso do ASP.NET, todos os controles que tem a tag “runat=server”. Por exemplo, temos o controle TextBox que contém a tag runat=server, pois as informações que são processadas por ele passa pelo servidor e retorna ao browser no formato HTML.

São os controles que ficam na ToolBox e neste artigo iremos aprender a fazer um pequeno server control e adiciona-lo na ToolBox para poder utiliza-lo em outras aplicações.

 

Criando um Server Control

 

Vamos criar uma aplicação do tipo Class Library.

 

- Abra o Visual Studio 2005;

- Escolha Visual C#;

- Escolha Windows e uma aplicação tipo Class Library;

 

Antes de começarmos, devemos adicionar uma referência a .dll System.Web. Para isso, abra o Solution Explorer, clique com o botão direito do mouse sobre “References” e escolha “Add Reference...”. Na tela que se abre, na aba .NET, role a barra de rolagem quase ao final e procure por System.Web. Selecione-o e clique em OK.

 

Agora, vamos ao código fazer referência a esta .dll que acabamos de inserir em nosso projeto. Insira as seguintes linhas de código, abaixo do último using no topo da sua classe:

 

using System.Web.UI;

using System.Web.UI.WebControls;

 

Devemos também inserir uma referência a esta namespace:

 

using System.ComponentModel;

 

Mas...que tipo de controle iremos criar? Vamos criar uma coisa bem simples, pois a idéia que quero passar é de como um controle desses funcionam. Depois, use sua criatividade para criar os controles de sua necessidade, pois nem tudo que nós precisamos está na ToolBox, certo?!

 

O controle que iremos criar é apenas um Label no qual definimos a posição Esquerda e do Topo relativa à página e ele ficará posicionado onde foi determinado.

 

Bem, como iremos criar um controle do tipo Label, devemos fazer com que nossa classe herde de Label. Veja o seguinte código:

 

 

public class Class1 : Label

 

 

 

Legal, agora iremos começar a programar nosso controle. Primeiramente, vamos inserir um atributo chamado ToolBoxData  em nossa classe, que será a tag do nosso controle, quando visto pelo modo HTML no Visual Studio.

 

Para inserir oatributo, veja o código abaixo:

 

[ToolboxData("<{0}:MeuServerControl runat=\"server\" ID=\"MeuServerControl1\" ></{0}:MeuServerControl>")]

 

public class Class1 : Label

 

 

Obs.: Você pode dar o nome que quiser, chamei de MeuServerControl apenas para exemplo.

 

Iremos criar duas propriedades que serão configuráveis pelo “Property Window”, são elas Esquerda e Topo. O código a seguir mostra como criá-las:

 

private int _esquerda;

private int _topo;

 

public int Esquerda

{

get

      {

            int valor = _esquerda;

            return valor;

      }

      set

     

            _esquerda = value;

      }

}

 

 

 

 

 

 

 

public int Topo

{

get

      {

int valor = _topo;

            return valor;

      }

      set

      {

            _topo = value;

 

      }

}

 

Agora iremos colocar alguns atributos em nossas propriedades, são eles:

 

Category("Layout") = Indica que sua propriedade irá ficar na Categoria “Layout”. (Na Property Window, as propriedades são divididas por categoria)

 

DefaultValue("0") = O valor default que irá aparecer quando você arrastar o controle pra tela. Neste caso, na propriedade vai aparecer o valor “0”.

 

Description("Posição a esquerda relativa a tela.") = A descrição da propriedade.

 

Browsable(true) = Indica se a propriedade irá aparecer na Property Window.

 

 

Veja como ficará o código:

 

private int _esquerda;

private int _topo;

 

[

 Category("Layout"),

 DefaultValue("0"),

 Description("Posição a esquerda relativa a tela."),

 Browsable(true)

]

public int Esquerda

{

get

      {

            int valor = _esquerda;

            return valor;

}

     

set

      {

            _esquerda = value;

      }

}

 

 

 

 

[

 Category("Layout"),

 DefaultValue("0"),

 Description("Posição relativa ao topo da página."),

 Browsable(true)

]

 

public int Topo

{

get

{

int valor = _topo;

return valor;

}

      set

      {

            _topo = value;

}

}

 

 

OK, nosso controle já está quase pronto. Agora falta fazer com que ele seja renderizado pelo browser. Iremos substituir (override) dois métodos definidos em nossa classe herdada, são eles AddAttributesToRender e RenderContents.

 

O primeiro irá adicionar ao controle a propriedade Style juntamente com as propriedades que nós definimos, no caso, Esquerda e Topo.

Veja como fica o código:

 

protected override void AddAttributesToRender(HtmlTextWriter writer)

{

writer.AddAttribute(HtmlTextWriterAttribute.Style, "position:relative; left:" + this.Esquerda + "px; top:" + this.Topo + "px");

base.AddAttributesToRender(writer);

}

 

Por fim, iremos então substituir (override) o método RenderContents para que o nosso controle seja renderizado na linguagem HTML e mostrado na tela. Nele, nós apenas verificamos se o usuário digitou alguma coisa na propriedade Text, da Property Window, e renderizamos na tela. Veja o código:

 

protected override void RenderContents(HtmlTextWriter output)

{

if (this.Text.Trim() == "")

      {

            output.Write("MeuServerControl");

}

      else

      {

            output.Write(this.Text.Trim());

}

}


Pronto! Agora compile o seu projeto. Será gerado uma .dll com o nome do projeto dentro da pasta Bin/Debug ou Release (depende do que voce escolheu) na pasta do seu projeto.

 

Para usar seu controle, abra ou crie uma web aplicação asp.net. Abra o ToolBox, onde ficam os controles padrões, clique com o botão direito e vá na opção “Choose Items...”.

 

Vai aparecer uma tela com vários componentes a ser adicionado e um botão “Browser...”. Clique neste botão, vá até a pasta onde está localizada a .dll do nosso controle e clique Open. Depois aperte OK e o controle geralmente irá aparecer na Categoria “General” da ToolBox.

 

Agora arraste-o para a tela, vá no Property Window e coloque algum valor nas propriedades que criamos. Rode sua web aplicação e veja como ficou.

 

Com o Internet Explorer aberto, veja o código fonte da página. Ele deve mostrar o nosso controle com a tag HTML já renderizado pelo browser. Algo parecido com isto:

 

<span id="MeuServerControl1" style="position:relative; left:50px; top:90px"> MeuServerControl</span>

 

Então é isso, espero que tenham gostado. Este é meu primeiro artigo e espero escrever vários.

 

Obrigado!

Thiago Lima de Vargas



Total de visualizações: 4959
voltar   comente  subir


Comentários:

Comentado por: Felipe - 1/2/2007 22:56:56
Pq DefaultValue não funciona?!
Comentado por: Armando - 14/8/2008 0:00:00
Bom Dia!
Trabalho numa plataforma VB/Dot.Net/Asp.Net/HTML e preciso montar uma tela onde vários dados indeterminados precisam ser mostrados na horizontal e vertical com barra de rolagem, Poderia me informar como faço? Tem função/comando para isso?

Abraços
Comentado por: Armando - 14/8/2008 0:00:00
Bom Dia!
Trabalho numa plataforma VB/Dot.Net/Asp.Net/HTML e preciso montar uma tela onde vários dados indeterminados precisam ser mostrados na horizontal e vertical com barra de rolagem, Poderia me informar como faço? Tem função/comando para isso?

Abraços
Comentado por: Armando - 14/8/2008 0:00:00
Bom Dia!
Trabalho numa plataforma VB/Dot.Net/Asp.Net/HTML e preciso montar uma tela onde vários dados indeterminados precisam ser mostrados na horizontal e vertical com barra de rolagem, Poderia me informar como faço? Tem função/comando para isso?

Abraços
Comentado por: Fábio Ottoni - 31/7/2009 0:00:00
Thiago....
Ótimo artigo cara....realmente muito bom....às vezes precisamos de saber como fazer algo, porém nem sabemos por onde começar....e esse seu artigo demonstra passo a passo como deveremos fazer....Muito bom.....abraços....
Fábio
Comentado por: Mauricio Junior - 5/2/2010 0:00:00
Armando, utilize css para colocar na vertical.

Comente (dê sua opinião): VOCÊ PRECISA LOGAR

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Criando um Server Control
Sobre o Autor
  [sumir] [aparecer]
 
Thiago Lima de Vargas

Informaes Online
Usurios Online: 205
Artigos:  750
Vdeos:  61
PodCast's:  44
Frum:  3128
Empregos:  1385
Usurios Cadastrados: 6163
Publicidade
LAYERDEV




Vdeos Publicados
 

Duas dicas de internet - Google RealTime e OpenDNS

Desconfie sempre da internet e emails

Microsoft Office online no Safari funcionando

Inovação Visual Studio .NET 2010 - parte 4

Office Live online

TAB TAB na ferramenta Visual Studio .NET

Apresentação do IMC - Sistema de Controle de Peso Mobile

Inovação Visual Studio .NET 2010 - parte 3

Inovação Visual Studio .NET 2010 - parte 1

Download de vídeos com o Safari

Criando Chart - Novo componente integrado com o Visual Studio.NET 2010

Serviços: SAC e SMS integrado

Café com TI - Info sobre o Visual Studio.NET 2010 - WebConfig

Café com TI - Info sobre o Visual Studio.NET 2010

Café com TI - Vírus se passando por Correios

Café com TI - Novo jeito de mandar e-mail com vírus

Café com TI - Formatando todo tipo de String

Resolvido erro do Banco do Brasil no browser

Erro no site do Banco do Brasil com o Safari

Duas dicas do Snow Leopard

Incompatibilidade no Snow Leopard

E-mail com vírus, veja os detalhes

Café com TI - Continuando a configuração de Themes no site

Café com Ti - Banner Rotativo

Café com TI - Evento Eco Brasília

Café com TI - Themes dentro do ASPNETi.COM

Café com TI - Trabalhando com o iCal no Macbook

Café com TI - Deixando o rodapé do seu site fixo

Café com TI - Windows 7 sendo utilizado sem qualquer incompatibilidade

Café com Ti - ASP.NET - Explicando o componente ModalDialogExtender do Ajax Toolkit

Café com TI - Indexação de URL com ASP.NET

Café com TI - Configurando Mail para sua conta no HotMail
Enquete ASPNETi.COM
 Os podcasts tem sido proveitoso pra você?

Favor logar para votar
 
Publicidade Vertical
NETITC