Bài giảng Lập trình WebForm - Phần 9: Composite Control - Nguyễn Hà Giang
Bạn đang xem tài liệu "Bài giảng Lập trình WebForm - Phần 9: Composite Control - Nguyễn Hà Giang", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
        Tài liệu đính kèm:
 bai_giang_lap_trinh_webform_phan_9_composite_control_nguyen.pptx bai_giang_lap_trinh_webform_phan_9_composite_control_nguyen.pptx
Nội dung text: Bài giảng Lập trình WebForm - Phần 9: Composite Control - Nguyễn Hà Giang
- 1 Composite Control Nguyễn Hà Giang 2009 Nguyen Ha Giang
- Nội dung 2  Composite control Nguyen Ha Giang
- Composite control 3  User control:  Cho phép kết hợp nhiều web control lại tạo thành một phần của trang web, và chỉ sử dụng trong ứng dụng chứa nó  Custom control:  Tùy biến lại dựa trên control chuẩn: ◼ TextBox, Button, Label  Tạo ra web control mới hoàn toàn dựa trên WebControl  Export ra file DLL, cho phép reuse trong nhiều ứng dụng  Composite control  Kết hợp các đặc tính của user control và custom control Nguyen Ha Giang
- Composite control 4  Cách tạo composite control  Tạo ứng dụng ASP.NET Server Control (Web control library)  Tạo lớp composite control kế thừa từ lớp cơ sở CompositeControl  Bổ sung các web control vào composite control  Viết các xử lý khởi tạo cho các control con  Override phương thức CreateChildControls: bổ sung các control con vào danh sách control  Override phương thức RenderControl (nếu cần) ◼ Sắp đặt cách thể hiện các control con trên composite control Nguyen Ha Giang
- Minh họa DateControl 5  DateControl là composite control cho phép user nhập vào ngày tháng năm ngày tháng năm Nguyen Ha Giang
- Minh họa DateControl 6  Tạo composite control  Tạo ứng dụng ASP.NET Web Control (VS 2008) Nguyen Ha Giang
- Minh họa DateControl 7  Khai báo lớp cơ sở cho DataControl là CompositeControl CompositeControl Nguyen Ha Giang
- Minh họa DateControl 8  Tạo 3 biến control dạng TextBox, để nhập các giá trị ngày, tháng, năm public class HaGDateControl : CompositeControl { // Tạo 3 textbox cho user nhập ngày tháng năm private TextBox txtDay = new TextBox(); private TextBox txtMonth = new TextBox(); private TextBox txtYear = new TextBox(); } Nguyen Ha Giang
- Minh họa DateControl 9  Tạo một property Value kiểu DateTime tham chiếu đến ngày tháng năm // Thuộc tính chứa giá trị DateTime public DateTime Value { get { return new DateTime(Convert.ToInt32(txtYear.Text), Convert.ToInt32(txtMonth.Text), Convert.ToInt32(txtDay.Text)); } set { txtDay.Text = value.Day.ToString(); txtMonth.Text = value.Month.ToString(); txtYear.Text = value.Year.ToString(); } } Nguyen Ha Giang
- Minh họa DateControl 10  Khởi tạo các textbox protected override void OnInit(EventArgs e) { // thực thi OnInit của lớp cơ sở base.OnInit(e); // khởi tạo cho textbox Day txtDay.ID = this.ID +"_day"; txtDay.MaxLength = 2; txtDay.Width = this.Width; // khởi tạo cho textbox Month txtMonth.ID = this.ID +"_month"; txtMonth.MaxLength = 2; txtMonth.Width = Width; // khởi tạo cho textbox Year txtYear.ID = this.ID + "_year"; txtYear.MaxLength = 4; txtYear.Width = Width; } Nguyen Ha Giang
- Minh họa DateControl 11  Override phương thức CreateChildControls:  Bổ sung các textbox vào danh sách control protected override void CreateChildControls() { // bổ sung các control con vào danh sách controls this.Controls.Add(txtDay); this.Controls.Add(txtMonth); this.Controls.Add(txtYear); // gọi lớp cơ sở base.CreateChildControls(); } Nguyen Ha Giang
- Minh họa DateControl 12  Render lại phần thể hiện composite control public override void RenderControl(HtmlTextWriter writer) { writer.RenderBeginTag(HtmlTextWriterTag.Table); writer.RenderBeginTag(HtmlTextWriterTag.Tr); writer.RenderBeginTag(HtmlTextWriterTag.Td); txtDay.RenderControl(writer); // texbox render writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("/"); writer.RenderEndTag(); writer.RenderEndTag(); // end td /// . } Nguyen Ha Giang
- Minh họa DateControl 13 writer.RenderBeginTag(HtmlTextWriterTag.Td); txtMonth.RenderControl(writer); // textbox render writer.RenderBeginTag(HtmlTextWriterTag.Td); writer.Write("/"); writer.RenderEndTag(); // end td writer.RenderEndTag(); // end td writer.RenderBeginTag(HtmlTextWriterTag.Td); txtYear.RenderControl(writer); // textbox render writer.RenderEndTag(); // end td writer.RenderEndTag(); // end tr writer.RenderEndTag(); } // end RenderControl Nguyen Ha Giang
- Minh họa DateControl 14  Biên dịch composite control  Kết quả là file dạng thư viện DLL  Tạo project ASP.NET Web App để test composite control  Bổ sung composite vừa tạo vào thanh công cụ ToolBox  Kéo thả composite control vào trang web test  Chạy project Nguyen Ha Giang






