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