Bài giảng Composite Control - Nguyễn Hà Giang

pptx 14 trang huongle 2350
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:

  • pptxbai_giang_composite_control_nguyen_ha_giang.pptx

Nội dung text: Bài giảng Composite Control - Nguyễn Hà Giang

  1. 1 Composite Control Nguyễn Hà Giang 2009 Nguyen Ha Giang
  2. Nội dung 2  Composite control Nguyen Ha Giang
  3. 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
  4. 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
  5. 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
  6. Minh họa DateControl 6  Tạo composite control  Tạo ứng dụng ASP.NET Web Control (VS 2008) Nguyen Ha Giang
  7. Minh họa DateControl 7  Khai báo lớp cơ sở cho DataControl là CompositeControl CompositeControl Nguyen Ha Giang
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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