LA.Net
Reflexões sobre C#, .Net e programação em geral

Na continuação dos posts anteriores, hoje vamos falar acerca de temas e de como podemos modificá-los em runtime. Como vimos no último post, a atribuição de um valor válido a esta propriedade apenas pode ser feita até ao final do evento PreInit.Vamos supor a seguinte página:

   21 <form id="form1" runat="server">

   22         <h3>Escolha de um theme em runtime</h3>

   23         Escolha o theme que deseja associar à página:

   24         <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">

   25             <asp:ListItem Text="Theme1" Value="Theme1" />

   26             <asp:ListItem Text="Theme2" Value="Theme2" />

   27         </asp:DropDownList>

   28         <p></p>

   29         Nome: <asp:TextBox ID="nome" runat="server" BorderColor="red"></asp:TextBox>

   30         <br />

   31         Telefone: <asp:TextBox ID="telefone" runat="server" BorderColor="red"></asp:TextBox><br />

   32         <asp:Button ID="Confirmar" runat="server" Text="Button" /><p />

   33         <asp:Label ID="info" runat="server" Text=""></asp:Label>

   34     </form>

O objectivo é modificarmos o tema associado à página em runtime. Este tipo de modificação pode ser efectuar através do processamento do evento PreInit da página:

    5 <script runat="server">

    6     protected override void OnPreInit( EventArgs e )

    7     {

    8         base.OnPreInit( e );

    9         if( !string.IsNullOrEmpty( this.Request.Params["DropDownList1"] ) )

   10         {

   11             this.Theme = this.Request.Params["DropDownList1"].ToString();

   12         }

   13     }

   14 </script>

O único aspecto interessante reside na obtenção do valor seleccionado na combo. Como a combo só será correctamente corrigida numa fase posterior, torna-se necessário recorrer ao valor contido na colecção Params do objecto HttpRequest.O exemplo anterior refere-se apenas à modificação da propriedade Theme. Como vimos, a aplicação de um Theme também pode ser feita através de outra propriedade (StyleSheetTheme). Se quisermos modificar dinamicamente o tema através da propriedade StyleSheetTheme temos de modificar o código anterior:

    5 <script runat="server">

    6     public override string StyleSheetTheme

    7     {

    8         get

    9         {

   10             if ( !string.IsNullOrEmpty( this.Request.Params ["DropDownList1"] ) )

   11             {

   12                 return  this.Request.Params ["DropDownList1"].ToString( );

   13             }

   14             else return "Theme1";

   15         }

   16         set

   17         {

   18             base.StyleSheetTheme = value;

   19         }

   20     }

   21 </script>

posted on Friday, April 22, 2005 12:10 AM
Comments
  • # Temas e skins - parte IV
    LA.Net
    Posted @ 5/1/2005 10:42 PM
Title  
Name  
Url
Box Code
Protected by FormShield
Comments