quarta-feira, 25 de janeiro de 2012

Manipulando HTML com a Classe HtmlGenericControl e o Comando FindControl

    As vezes precisamos manipular o HTML para adicionar novas funções ou alterar o layout criado, neste post pretendo mostrar uma forma de se fazer isto.
    O comando FindControl é utilizado para localizar um controle, para que este comando funcione em projetos WEB precisamos no ASP.Net definir um ID e colocar o atributo runat=”server” conforme os exemplos abaixo:
 class="xml"><!-- runat="server" em uma div -->
<div class="menu" id="divMenu" runat="server">

<!-- runat="server" no body, repare que eu adicionei o atributo ID ao body -->
<body runat="server" id="body">
    O atributo runat=”server” pode ser adicionado em qualquer parte do HTML, este atributo server para informar que o controle (TAG HTML) vai ficar disponível no código do lado do servidor.
    Feito isso segue alguns exemplo do uso do comando FindControl :
// Pegando um controle ul 
HtmlGenericControl ulPrincipal = (HtmlGenericControl)FindControl("ulPrincipal");

// Pegando o body da página (o body deve conter o atributo ID e o atributo runat="server", conforme mencionado acima) 
HtmlGenericControl pgBody = (HtmlGenericControl)FindControl("body");

    Como a proposta deste artigo é a manipulação de controles HTML verifique que eu converti o controle localizado para a classe HtmlGenericControl, está classe vai nos ajudar a manipular os atributos do controle HTML, abaixo segue alguns exemplos de atributos que podemos manipular:
// Adicionando uma classe CSS
liLinhaF.Attributes.Add("class", "linha-menu");

// Adicionando um titulo, o conteúdo e o link de um controle a
aHref.Attributes.Add("title", "Titulo"); // Titulo
aHref.Attributes.Add("href", "link"); // link
aHref.InnerText = "Conteudo" // Conteúdo 

// Adicionando código HTML ao controle
liLinha.InnerHtml = " ";

// Adicionando o evento onload ao body da página
pgBody.Attributes.Add("onload", "javascript:alert(\'teste !\')");

// Manipulando o estilo de um controle HTML
lu.Style.Add("display", "none");
lu.Style.Add("visibility", "hidden");
    Além de manipular atributos também podemos adicionar outros controles dentro de outros controles (caso você tenha uma div ou table):
HtmlGenericControl ulPrincipal = (HtmlGenericControl)FindControl("ulPrincipal");
HtmlGenericControl liLinha = new HtmlGenericControl("li");
liLinha.Attributes.Add("class", "linha-menu");
liLinha.InnerHtml = "<B>Teste</B>";
ulPrincipal.Controls.Add(liLinha);
    Com o comando FindControl e a classe HtmlGenericControl fica muito fácil a manipulação do HTML do lado do servidor.

Referências:
Método Control.FindControl (String)
Classe HtmlGenericControl
Curso ASP.NET 3.5 em VB.NET e C# - Controles(Fernando Amaral)
Apply CSS for an HTML generic control like

Nenhum comentário :

Postar um comentário