Ok...I got this off www.codeprojects.com but I liked it so much I figured I would share it with others. You can use it in your starter kits to dynamicly change the themes. You
can bind other controls to it if you don't like the radio buttons.
Step 1: Under App_Code folder, we add a class name Theme.cs:
public
class Theme
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
public Theme(string name)
{
Name = name;
}
}
Step 2: Under App_Code folder, we add a ThemeManager class name ThemeManager.cs. This will list all the available themes under /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
}
Step 3: Comment out any pre-defined theme such as <!--<pages styleSheetTheme="Black"/>--> in web.config.
You don't need this because the application level default theme will be specified in the BasePage class in Step 6.
Step 4: In you master page such as Default.master page Add datasource and radiobutton list. You can use dropdownlist if you would preferred.
Step 6: Add 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;
Member
247 Points
146 Posts
How to Create a Radio button to dynamicly control for your themes!
Jan 02, 2007 05:25 PM|devinmccloud|LINK
Ok...I got this off www.codeprojects.com but I liked it so much I figured I would share it with others. You can use it in your starter kits to dynamicly change the themes. You can bind other controls to it if you don't like the radio buttons.
Step 1: Under App_Code folder, we add a class name Theme.cs:
public class Theme
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
public Theme(string name)
{
Name = name;
}
}
Step 2: Under App_Code folder, we add a ThemeManager class name ThemeManager.cs. This will list all the available themes under /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
}
Step 3: Comment out any pre-defined theme such as <!--<pages styleSheetTheme="Black"/>--> in web.config. You don't need this because the application level default theme will be specified in the BasePage class in Step 6.
Step 4: In you master page such as Default.master page Add datasource and radiobutton list. You can use dropdownlist if you would preferred.
<asp:ObjectDataSource ID="ThemeDataSource" runat="server" SelectMethod="GetThemes" TypeName="ThemeManager" ></asp:ObjectDataSource>
<div class=code><
asp:RadioButtonList ID="strTheme" runat="server" DataTextField=name DataValueField=name OnSelectedIndexChanged="strTheme_SelectedIndexChanged" OnDataBound="strTheme_DataBound" DataSourceID="ThemeDataSource" AutoPostBack=true RepeatDirection=Horizontal /> </div>Step 5: In master page code behind such as Default.master.cs add these methods
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);
}
Step 6: Add BasePage class under App_Code and specify the default Theme. Here we use "White".
using System;
<div class=code>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
</div>{
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"]);
}
}
}
Step 7: Inherit BasePage from all pages using dynamic theme
public partial class Default_aspx : BasePage{
}
All credit goes to Sue Googe!
<script src="/script/togglePre.js" type=text/javascript></script>Member
34 Points
132 Posts
Re: How to Create a Radio button to dynamicly control for your themes!
Mar 07, 2008 05:42 AM|harish448|LINK
can u explain me the above code