![]() |
Web Development »
ASP.NET »
Howto
Intermediate
License: The Code Project Open License (CPOL)
Dynamic Themes in ASP.NET 2.0 (C#)By Sue_NCA step by step guide to create dynamic themes in ASP.NET 2.0. |
C#, CSS, Windows, .NET, ASP.NET, Visual Studio, Dev
|
|
Advanced Search |
|
|
|
||||||||||||||||
ASP.NET 2.0 makes dynamic themes really easy. No need to envy someone having cool multiple themes, you can have your own instantly! This article gives you step by step instructions on how to make dynamic themes in C#. You can try this code out with the Personal Web Site Starter Kit.
Live demo is available here. Click on "change themes" on the top left corner, under the logo.
public class Theme
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
public Theme(string name)
{
Name = name;
}
}
ThemeManager class file named ThemeManager.cs. This will list all the available themes under the /App_Themes folder.using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using System.Collections.Generic;
using System.IO;
public class ThemeManager
{
#region Theme-Related Method
public static List<Theme> GetThemes()
{
DirectoryInfo dInfo = new DirectoryInfo(
System.Web.HttpContext.Current.Server.MapPath("App_Themes"));
DirectoryInfo[] dArrInfo = dInfo.GetDirectories();
List<Theme> list = new List<Theme>();
foreach (DirectoryInfo sDirectory in dArrInfo)
{
Theme temp = new Theme(sDirectory.Name);
list.Add(temp);
}
return list;
}
#endregion
}
<!--<pages styleSheetTheme="Black"/>--> in the web.config. You don't need this because the application level default theme will be specified in the BasePage class in Step 6.<asp:ObjectDataSource ID="ThemeDataSource" runat="server"
SelectMethod="GetThemes" TypeName="ThemeManager" ></asp:ObjectDataSource>
<asp:RadioButtonList ID="strTheme" runat="server" DataTextField=name
DataValueField=name OnSelectedIndexChanged="strTheme_SelectedIndexChanged"
OnDataBound="strTheme_DataBound" DataSourceID="ThemeDataSource"
AutoPostBack=true RepeatDirection=Horizontal />
protected void strTheme_DataBound(object sender, EventArgs e)
{
strTheme.SelectedValue = Page.Theme;
}
protected void strTheme_SelectedIndexChanged(object sender, EventArgs e)
{
Session.Add("MyTheme", strTheme.SelectedValue);
Server.Transfer(Request.FilePath);
}
BasePage class under App_Code, and specify the default theme. Here, we use "White".using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public class BasePage : System.Web.UI.Page
{
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
if (Session["MyTheme"] == null)
{
Session.Add("MyTheme", "White");
Page.Theme = ((string)Session["MyTheme"]);
}
else
{
Page.Theme = ((string)Session["MyTheme"]);
}
}
}
BasePage:public partial class Default_aspx : BasePage
{
}
Happy programming!
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 19 Jun 2006 Editor: Smitha Vijayan |
Copyright 2006 by Sue_NC Everything else Copyright © CodeProject, 1999-2009 Web13 | Advertise on the Code Project |