MỘT SỐ CÔNG NGHỆ VÀ KỸ THUẬT 2.1Microsoft NET
2.3.3 Cấu trúc của một Control điển hình: DataGrid
Cấu trúc chính
Kế thừa lớp Control và thực thi lớp INamingContainer để tránh xung đột id.
Hình 2.7 - DataGird được kế thừa từ Control, INamingContainer với các chức năng cơ bản phân trang, sắp xếp, cập nhật.
Thuộc tính ParseChildren: bằng true cho phép sử dụng thuộc tính template, false để tránh control con nằm trong mà thay vào đó là các phần tử nhúng vào
Thuộc tính Designer kết hợp với RepeaterDesigner cho phép dữ liệu nguồn được cung cấp trên giao diện thiết kế của VS.NET.
Hình 2.8 - DataBind và CreateChildControls Các thành phần
Templates
Datagrid có 5 template: HeaderTemplate, FooterTemplate, SeparatorTemplate, ItemTemplate và AlternatingItemTemplate. Trong đó hai kiểu cuối là: ItemTemplate và AlternatingItemTemplate có khả năng gắn với dữ liệu (data binding).
Events
Có các sự kiện như: ItemCommand, ItemCreated, ItemDataBound.
ItemCommand có thể gom các sự kiện được kích hoạt bởi những control ở cấp dưới theo kiểu nổi bọt.
ItemCreated được kích hoạt mỗi lần RepeaterItem được tạo. Nó cho phép thay đổi lần cuối cho các template động trước khi được trả về client.
ItemDataBound được gọi sau khi các ràng buộc dữ liệu đã thực hiện trên template. Sự kiện này chỉ dùng cho template ItemTemplate và Alternating vì các template khác không hỗ trợ ràng buộc dữ liệu
DataSourceHelper Class
DataSourceHelper
ResolveDataSource(object DataSource, string DataMember
DataSet
DataViewManager
DataTable
Kiểm tra xem IListSource có chứa tập hợp các danh sách không IListSource ITypedList IList Sử dụng DataViewManager để tìm DataTable có DataMember phù hợp trong tập hợp các DataTable của DataSet
Thực thi giao tiếp IListSource có thể trả về một IList chứa tập các IList
Các tập hợp đơn giản như Array, ArrayList chỉ cần ép kiểu DataSource thành Ienumerable, bên dưới là bước xử lý cho kiểu phức tạp
Hình 2.9 -Event Bubbling
Data Binding
Dữ liệu lựa chọn dựa vào DataMember trong DataSource.
DataSource được chia theo 2 dạng:
Các collection đơn giản như Array, ArrayList, DataReader được ép kiểu về giao tiếp Ienumarable
Collection phức tạp như DataSet được ép kiểu về giao tiếp IListSource. Thuộc tính ContainsListCollection của giao tiếp trên cho phép kiểm tra DataSet có chứa nhiều DataTable không. Nếu có nó phải sử dụng lớp thực thi giao tiếp ITypedList là DataViewManager để ràng buộc (bind) tới đúng dữ liệu nguồn
2.3.4 Biên dịch và phát hành một Custom Control với ASP.NET
Các cách tạo Custom Control
Tạo một custom control từ một control đã có sẵn. (derived custom control)
Tạo custom control hỗn hợp từ các control có sẵn thành một control mới. Ví dụ: Control Login được tạo mới dựa trên control Text, Button, ... (composite custom control)
Tạo một custom control đầy đủ bằng cách thừa kế lớp System.Web.UI.WebControls.WebControl. (full custom control)
Tạo một custom control đầy đủ:
Để tạo file .dll ta làm theo các bước sau
Vào File –> New –> Project chọn Web Control Library hoặc sử dụng project loại Class Library.
Hình 2.11 - Tạo một project loại Web Control Library
Nhấn OK để tạo project và vào giao diện chương trình để xây dựng Control
Hình 2.12 - Thông điệp nhận được sau khi biên dịch thành công được file .dll
Đưa file .dll vào project ứng dụng (project web): kích chuột phải lên project chọn Add Reference và chọn đường dẫn tới file .dll như hình dưới
Hình 2.13 - Cách Add một file .dll vào ứng dụng Web
Phát hành
<configuration> <system.web> <pages>
<controls>
<add tagPrefix="DataGrid" assembly="MN120507.Controls" namespace=”MN120507.Controls” />
</controls> </pages> </system.web> </configuration>
Khai báo trong ascx
<%@ Register tagPrefix="DataGrid" assembly="MN120507.Controls"%>
Sử dụng Control trong trang web (trang ascx hoặc aspx)
Lựa chọn lớp kế thừa: Việc lựa chọn các lớp kế thừa cũng có mức ảnh hưởng đến control được viết ra, sau đây có các loại chọn lớp kế thừa.
Chọn lớp Control
Không có giao diện trực quan cho thiết kế
Chọn lớp WebControl
Có giao diện trực quan cho thiết kế
Lớp WebControl hỗ trợ sẵn một số style như: Font, Color, Class….
Chọn các lớp Server Control có sẵn
Khi muốn thay đổi hoặc mở rộng chức năng cho các Control đó như: Label, TextBox….
Đưa Custom Control vào Toolbox
Mở trang .aspx trong chế độ thiết kế
Sau đó chọn tab “.Net Framework Components” Kích “Browse…” để chọn đường dẫn tới Control Kích OK để đóng cửa sổ
Hình 2.14 - Đưa Custom Control vào Toolbox