Thứ Tư, 1 tháng 4, 2009

Truyền giá trị từ Page cho User Control

Trong bài viết này chúng ta sẽ xem xét chi tiết các bước xử lý cho việc tạo ra, thiết lập và lấy lại các thuộc tính của User Control như thế nào. Có thể bạn đã tình cờ gặp trường hợp mà bạn cần truyền các giá trị từ trong trang .aspx của bạn đến một điều...

Trong bài viết này chúng ta sẽ xem xét chi tiết các bước xử lý cho việc tạo ra, thiết lập và lấy lại các thuộc tính của User Control như thế nào.

Có thể bạn đã tình cờ gặp trường hợp mà bạn cần truyền các giá trị từ trong trang .aspx của bạn đến một điều khiển User Control (.ascx). Tình huống này có thể có một số cách thức giải quyết với việc lưu giá trị vào trong session hay database và sau đó lấy giá trị đó ra truyền vào cho User Control.

Tuy nhiên, có một cách dễ dàng và tối ứu nhất hơn cả là tạo các thuộc tính của User Control đó và thiết lập các thuộc tính đó ở trong trang .aspx và có truy cập nó từ User Control.

Tạo User Control (Person.ascx)

Dưới đây là mã cho điều khiển User Control

view plainprint?

1. <%@ Control Language="C#" AutoEventWireup="true" CodeFile="Person.ascx.cs"
2. Inherits="UserControl_Person" %>
3.

4.

5. This is the User Control text.

6. First Name:

7. Last Name:

8. Age:
9.

10.


<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Person.ascx.cs" Inherits="UserControl_Person" %>
This is the User Control text.
First Name:
Last Name:
Age:


Trong đoạn mã này, chúng ta đặt vào đó 3 Label cho các thuộc tính FirstName, LastName và Age. Chúng ta sẽ gán các giá trị của các Label từ phía server (aspx.cs) hoặc là trên trang .aspx sau đó.

Đây sẽ là đoạn mã code behind cho phần User Control:

view plainprint?

1. private string m_FirstName = string.Empty;
2. private string m_LastName = string.Empty;
3. private int m_Age = 0;
4. # region Properties
5. public string FirstName
6. {
7. get { return m_FirstName; }
8. set { m_FirstName = value; }
9. }
10. public string LastName
11. {
12. get { return m_LastName; }
13. set { m_LastName = value; }
14. }
15. public int Age
16. {
17. get { return m_Age; }
18. set { m_Age = value; }
19. }
20. #endregion Properties
21. protected void Page_Load(object sender, EventArgs e)
22. {
23. if (!IsPostBack)
24. {
25. lblFirstName.Text = m_FirstName;
26. lblLastName.Text = m_LastName;
27. lblAge.Text = m_Age.ToString();
28. }
29. }

private string m_FirstName = string.Empty; private string m_LastName = string.Empty; private int m_Age = 0; # region Properties public string FirstName { get { return m_FirstName; } set { m_FirstName = value; } } public string LastName { get { return m_LastName; } set { m_LastName = value; } } public int Age { get { return m_Age; } set { m_Age = value; } } #endregion Properties protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { lblFirstName.Text = m_FirstName; lblLastName.Text = m_LastName; lblAge.Text = m_Age.ToString(); } }

Trong đoạn mã này, chúng ta khai báo ba biến cho các thuộc tính FirstName, LastName, và Age tương ứng. Ở đây bạn phải tạo ra ba thuộc tính như là việc khai báo các thuộc tính trong một file class vì thực tế User Control cũng chỉ là một class mà thôi.

Trong phương thức Page_Load, chúng ta kiểm tra với phương thức IsPostBack và thiết lập thuộc tính Text cho các biến tương ứng.
Tạo trang .aspx (default.aspx)

Trong trang này chúng ta sẽ gọi User Control mà chúng ta đã tạo ra ở trên. Đây là đoạn mã thực hiện điều đó:

view plainprint?

1.
2.

Demo: Setting properties of user control from server side/.aspx page


3.

Demo: Setting properties of user control from server side/.aspx page



Bạn có thể nhận thấy trong phần mã ở trên, chúng ta đã thiết lập các thuộc tính của chính User Control này. Bạn có thể thực hiện theo cách mà bạn chỉ ra các thuộc tính của User Control vào trong trang .aspx hoặc là trong file .aspx.cs. Một điều thú vị ở đây là cả hai trường hợp bạn sẽ nhận được phần gợi ý thuộc tính mà bạn đã tạo ra cho User Control đó.

Dưới đây là phần mã cho trang .aspx

view plainprint?

1. protected void Page_Load(object sender, EventArgs e)
2. {
3. if (!IsPostBack)
4. SetProperties();
5. }
6. private void SetProperties()
7. {
8. Person1.FirstName = "Sheo";
9. Person1.LastName = "Narayan";
10. Person1.Age = 20;
11. }

protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) SetProperties(); } private void SetProperties() { Person1.FirstName = "Sheo"; Person1.LastName = "Narayan"; Person1.Age = 20; }

Trong đoạn mã này bàn đã thiết lập các thuộc tính của User Control trong sự kiện Page_Load sau khi kiểm tra điều kiện có phải là Not IsPostBack

Bây giờ bạn đã có mọi thứ rồi đó. Chỉ việc chạy nó và bạn sẽ thấy rằng thật là dễ dàng làm sao để có thể truyền giá trị từ trong trang .aspx của bạn vào trong các User Control.

1 nhận xét:

  1. Lưu ý: bạn cần chỉ rõ nguồn bài viết : http://hp-aptech.edu.vn/hpa/programming/archive/2009/01/22/t-o-bi-u-xem-dung-l-ng-c-ng.aspx

    Trả lờiXóa