Bài giảng Composite Control - Nguyễn Hà Giang
Bạn đang xem tài liệu "Bài giảng 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_composite_control_nguyen_ha_giang.pptx
Nội dung text: Bài giảng 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