Em seção posterior veremos os novos controles adicionados no
ASP.NET 3.5, que como vimos na seção de novidades desta versão, são poucos.
No ASP.NET 2.0 foram adicionados de cerca de 50 novos
controles de servidor. Alguns presentes na versão 1.x, como o DataGrid, não
estão mais disponíveis na caixa de ferramentas, porém podem ser facilmente
adicionados.
|

|
Não estudaremos detalhadamente todos os Server Controls.
|
Você pode criar uma aplicação utilizando basicamente dois
grandes grupos de controles: controles HTML, que são os controles padrão
conhecidos e Server Controls, ou controles de servidor.
|

|
Você pode criar aplicativos usando apenas controles HTML,
porém tenha um bom motivo para fazer isto.
|
Server Controls são controles ricos em funcionalidade, que podem
ter seus eventos ou propriedades manipulados no código executado no servidor.
Todo controle de servidor é codificado através de uma tag ASP, que não é HTML
padrão que conhecemos. Em tempo de execução, o ASP.NET renderiza esta tag em
HTML otimizado para o navegador em que a aplicação é executada.
Por exemplo, um dos controles mais simples é o Label. Ao
colocar um Label em um WebForm o VS gera o seguinte código:
|
<asp:Label ID="Label1"
runat="server" Text="Label"></asp:Label>
|
|

|
Você pode gerenciar a apresentação de seu site
manualmente, se preferir.
|
Ao executarmos a aplicação, a tag ASP:Label é renderizado em
uma tag span:
|
<span
id="Label1">Label</span>
|
O atributo runat=Server não define que o controle é um
controle de servidor, mas sim que ele será visível no código executado no
servidor. Isto significa que se adicionarmos este atributo a um controle HTML,
este também poderá ser manipulado no servidor, porém de forma mais pobre:
|
<input
id="Text1" runat="server"
type="text" />
|
|

|
Não estudaremos controles HTML.
|
Acessando eventos e propriedades de controles
Na caixa de propriedades, clicando no botão Events
, você tem
uma relação de todos os eventos possíveis para um determinado controle. Para
que o VS crie automaticamente um manipulador para o evento basta dar um duplo
clique no nome. Alguns manipuladores podem ser criados quando clicamos sobre o
próprio controle, como o evento Click de um Button:

|
Protected Sub Button1_Click(ByVal sender As Object,ByVal e _
As System.EventArgs) Handles
Button1.Click
End Sub
|

|
protected void Button1_Click(object sender, EventArgs
e)
{
}
|
Junto com o evento são passadas duas propriedades, sender, do
tipo object, que contem o objeto que disparou o evento, e e, do tipo
EventArgs, que contem algumas propriedades especificas do evento.
Ler ou alterar propriedades de um controle é feito no modelo controle.propriedade,
como nos exemplos abaixo:

|
Protected Sub Button1_Click(ByVal sender As Object, ByVal e _
As System.EventArgs) Handles
Button1.Click
Button1.Text = "Gravar"
Button1.ToolTip = "Clique Aqui para
Gravar"
End Sub
|

|
protected void Button2_Click(object sender, EventArgs
e)
{
Button1.Text = "Gravar";
Button1.ToolTip = "Clique Aqui para
Gravar";
}
|
Você pode definir que mais de um controle dispare um mesmo
manipulador de evento, internamente basta você verificar qual foi o controle
que causou o evento. De uma maneira geral, para ambas as linguagens, basta você
selecionar o evento no dropdown na caixa de propriedades. O interessante é como
o VS trata isto em tempo de design de forma tão diferenciada. No C# o nome do
manipulador do evento é colocada no arquivo ASPX, no atributo OnClick. No
VB.NET, é adicionado o nome do controle ao grupo handles, ao final da
assinatura do evento. O resultado em tempo de execução obviamente é o mesmo.
Propriedades Comuns
Algumas propriedades são comuns, se não a todos, mas a maioria
dos controles. Vamos vê-las agora:
·
ID: O nome do controle, deve ser único
·
BackColor: Cor de fundo do controle
·
BorderColor: Cor de Borda do Controle
·
BorderStyle: Estilo da borda do Controle
·
BorderWidt: Largura da borda do controle
·
CssClass: Indica a classe CSS a ser aplicada no controle
·
Enabled: indica se o controle esta habilitado
·
EnableTheming: Indica se é o tema do controle estará ativo
·
EnableViewState: Indica se o controle vai armazenar seu estado no
viewstate da pagina
·
Font: Fonte do controle
·
SkinID: Indica o ID do skin a ser utilizado. Skins serão
estudados mais adiante
·
Text: Representa o texto que será exibido ao usuário da aplicação
·
ToolTip: é a dica que será exibida ao usuário quando este
posicionar o mouse sobre o controle.
Uso de HotKeys
Duas propriedades novas e interessantes, que estão presentes em
alguns controles, são AcessKey e AssociatedControlID. Com a primeira definimos
uma tecla de atalho para o controle, que no navegador e acionado junto com a
tecla ALT. Já com AssociatedControlID podemos definir qual o controle vai
receber o foco no caso da combinação de teclas ser acionadas. Este recurso é
conhecido como HotKeys.
Vamos estudar agora os três principais controles de servidor, que
formam um conjunto básico para a criação de qualquer aplicativo.
Label
Um controle simples, porém poderoso, que nos permite exibir
algum texto em uma página Web. Todas suas propriedades podem ser manipuladas no
código gerado no servidor.
|

|
Alguns exemplos de codificação de controles, mostram
primeiro em tempo de design (ASP) e em seguida em tempo de execução (HTML) .
|
É definido pela a tag ASP:Label e quando executado renderizado
em uma tag span:
|
<asp:Label ID="Label1"
runat="server" Text="ASP.NET 3.5 Rules!!"></asp:Label>
|
|
span id="Label1">ASP.NET 3.5
Rules!!</span>
|
TextBox
O textbox é um controle de edição simples. Através da
propriedade TextMode podemos utilizá-lo ainda para receber senhas ou mesmo
transforma-lo em um controle com múltiplas linhas. Uma novidade é a propriedade
AutoCompleteType, que pode receber apenas valores pré-definidos. Ao preencher
um segundo controle com o mesmo valor para esta propriedade, o navegador deverá
sugerir o preenchimento do valor informado no primeiro campo.
È definido pela a tag ASP:TextBox e quando executado
renderizado em uma tag input do tipo text ou password ou então textarea, de
acordo com a propriedade textmode.
|
<asp:TextBox ID="TextBox1"
runat="server">Normal</asp:TextBox>
<asp:TextBox ID="TextBox2"
runat="server" TextMode="Password">Senha</asp:TextBox>
<asp:TextBox ID="TextBox3"
runat="server" TextMode="MultiLine">MultiLine</asp:TextBox>
|
|
<input name="TextBox1"
type="text" value="Normal" id="TextBox1" />
<input name="TextBox2"
type="password" id="TextBox2" />
<textarea name="TextBox3"
rows="2" cols="20"
id="TextBox3">MultiLine</textarea>
|
Button
O button é um botão de comando básico. Sua principal função é
causar um post back para a execução de algum código no servidor. O principal
evento é Click, que, obviamente, é disparando quando clicamos no botão. É
renderizado em uma tag input do tipo submit.
|
<asp:Button ID="Button1"
runat="server" Text="Button" />
|
|
<input type="submit"
name="Button1" value="Button" id="Button1"
/>
|
Uma importante propriedade é a PostBackUrl, que indica para
qual página será executado o post back.
Para exemplificar, o código abaixo lê a um TextBox de um
formulário que originou o PostBack:

|
Dim Nome As String
= CType(PreviousPage.FindControl("Nome"), _ TextBox).Text
|
LinkButton
O controle linkbutton é uma mistura de botão de comando com
HyperLink. Sua aparência é de um Link, seu comportamento e suas propriedades o
assemelham a um Button. Não existe propriedade NavigateUrl, o redirecionamento
deve ser codificado no post back ou através da propriedade PostBackUrl.
|
<asp:LinkButton ID="LinkButton1"
runat="server">LinkButton</asp:LinkButton>
|
Nos bastidores, o LinkButton renderiza uma tag a, cujo
atributo Href, ao invés de conter uma URL, dispara uma função Java Script
gerada pelo ASP.NET.
|
<a id="LinkButton1"
href="javascript:__doPostBack('LinkButton1','')">LinkButton</a>
|