Thứ Hai, 31 tháng 1, 2011

Trong bài viết này, mình sẽ hướng dẫn các bạn tạo 1 trang web có nhiều giao diện và có thể thay đổi bằng cách lựa chọn ở Dropdownlist. Mình chỉ ví dụ bằng một website nho nhỏ là thay đổi màu của dòng chữ HelloWorld trên trang web.

Đầu tiên, bạn tạo lớp Theme.cs với nội dung như sau:


public class Theme
{
public string Name{ get; set; }
public Theme(string name)
{
Name = name;
}
}

Mục đích của class này là lưu tên của các theme có trong website

Tiếp theo, bạn tạo class ThemeManager.cs và có một phương thức tĩnh public static List<Theme> GetThemes() với mục đích là lấy tất cả các theme có trong thư mục App_Themes

Nội dung class đó như sau:


using System.Collections.Generic;
using System.IO;
using System.Linq;

public class ThemeManager
{
public static List<Theme> GetThemes()
{
string[] dArrInfo = Directory.GetDirectories(System.Web.HttpContext.Current.Server.MapPath("App_Themes"));
return dArrInfo.Select(d => new Theme(d.Split('\\')[d.Split('\\').Length-1].ToString())).ToList();
}
}

Bước Tiếp Theo: Chúng ta tạo một Class có tên là BasePage.cs để xác định Theme mặc định chúng ta sẽ sử dụng. Mặc định là theme red. Nội dung class này như sau:


using System;

public class BasePage : System.Web.UI.Page
{

protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
if (Session["MyTheme"] == null)
{
Session.Add("MyTheme", "Red");
Page.Theme = (string)Session["MyTheme"];
}
else
{
Page.Theme = (string)Session["MyTheme"];
}
}
}

Bước tiếp nữa bạn tạo ra thư mục App_Themes và add vào đó 2 theme RedBlue. Trong RedBlue bạn lại add vào 2 StyleSheet và gõ vào đoạn CSS sau:

BlueTheme.css


div#text
{
color:Blue;
}

RedTheme.css


div#text
{
color:Red;
}

Hình ảnh ở Solution Explorer:

Capture
Sau đó, bạn kéo vào trong thẻ body ở trang default.aspx các control như đoạn mã sau. Nhớ là thẻ div chứa chuỗi HelloWorld phải có Id=”text” vì đoạn css ở trên định dạng cho thẻ div đó.


<asp:ObjectDataSource ID="ThemeDataSource"
SelectMethod="GetThemes"
TypeName="ThemeManager"
runat="server">
</asp:ObjectDataSource>
<div>
<asp:DropDownList runat="server" ID="ddlColor" DataSourceID="ThemeDataSource"
AutoPostBack="True" ondatabound="ddlColor_DataBound"
onselectedindexchanged="ddlColor_SelectedIndexChanged"
DataTextField="Name"
DataValueField="Name">
</asp:DropDownList>
</div>
<div id="text">
Hello world!
</div>

Hình ảnh giao diện:

Capture

Tiếp theo là gõ code cho sự kiện ondataboundonselectedindexchanged của DropDownList


protected void ddlColor_DataBound(object sender, EventArgs e)
{
ddlColor.SelectedValue = Page.Theme;
}
protected void ddlColor_SelectedIndexChanged(object sender, EventArgs e)
{
Session.Add("MyTheme", ddlColor.SelectedValue);
Server.Transfer(Request.FilePath);
}

Sau đó bạn cho trang default.aspx kế thừa class BaseTheme.cs


public partial class _Default :BasePage

Bạn chạy thử và xem kết quả.

Project đính kèm: Download

Chúc các bạn thành công!

0 nhận xét:

Đăng nhận xét

Categories

Sample Text

Được tạo bởi Blogger.

Must Read

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Popular Posts

Video

Popular Posts

Our Facebook Page