3.3.5 .Tương tác giữa các Web Part
3.3.5.2 .Sinh ra các WebPart kết nối
Ngồi các giao diện đã kể ở trên, có một vài phương thức phức tạp hơn để các Web Parts tương tác với nhau và chúng được định nghĩa trong lớp cơ
trước khi các Web Part được sinh ra. Sau đây ta sẽ liệt kê ra các bước cơ bản về vòng đời của các Web Parts kết nối:
Với mỗi cặp các Web Parts kết nối thì cơ sở hạ tầng Web Parts sẽ gọi phương thức EnsureInterfaces trên provider và consumer.
EnsureInterfaces là một phương thức Web Parts có khả năng cài đè, nó
cung cấp cơ sở hạ tầng với các thơng tin cho mỗi loại giao diện đang được thực thi, một tham chiếu tới Web Part và số lượng tối đa các kết nối được phép.
Với mỗi cặp các Web Parts kết nối, cơ sở hạ tầng Web Part gọi phương thức CanRunAt để biết được mỗi Web Parts có thể thi hành từ đâu (từ client và/hoặc từ server dựa trên cấu hình hiện tại).
Phương thức PartCommunicationInit được gọi cho provider và sau đó là cho consumer, cả hai Web Part được báo tin rằng kết nối đã được thiết lập và đảm bảo rằng các điều khiển con của chúng đã được thiết lập.
Phương thức PartCommunicationInit được gọi cho provider. Phương thức này có thể tùy biến phát sinh ra sự kiện CellProviderInit, nếu phát sinh sự kiện thì nó phải được điều khiển bởi cơ sở hạ tầng Web Part và nhất thiết phải gọi đến phương thức tương ứng trên consumer. Trong sự kiện CellProviderInit, provider cung cấp một đặc tả về các trường mà nó đang xuất bản. Trong phương thức tương ứng, consumer có thể
kiểm chứng những loại giữ liệu gì provider sẽ gửi đi. Với những trường khơng được chấp nhận thì một ngoại lệ sẽ được ném ra.
Phương thức PartCommunicationInit cũng được gọi trên consumer và có thể tùy biến phát sinh sự kiện CellConsumerInit. Nếu sự kiện phát sinh, nó sẽ được điều khiển bởi cơ sở hạ tầng Web Part và được phục vụ thông qua phương thức CellConsumerInit của provider.
Phương thức PartCommunicationMain được triệu gọi trên provider để đóng gói bất cứ dữ liệu cơng cộng nào và báo tin cho consumer thông qua sự kiện CellReady. Một lần nữa sự kiện được nắm bắt bởi cơ sở hạ tầng bên dưới và được điều khiển thông qua phương thức CellReady của consumer.
Đoạn mã chương trình sau cho thấy một sự thi hành đặc thù của phương thức PartCommunicationMain trên một Web Part provider. Trong ví dụ này ta đề cập đến một Web Part có tên là EmployeeViewer, nó hiển thị một thuộc tính integer – EmployeeID. Theo đoạn mã này thì Web Part xuất ra ID của nhân viên hiện tại đã được lựa chọn.
public override void PartCommunicationMain() {
{
CellReadyEventArgs cellReadyArgs = new CellReadyEventArgs();
cellReadyArgs.Cell = _employeeID; CellReady(this, cellReadyArgs); }
}
Đoạn mã sau chứa sự phản hồi thông thường của consumer cho sự kiện CellReady:
public void CellReady(object sender, CellReadyEventArgs cellReadyArgs) {
if(cellReadyArgs.Cell != null) {
}
Consumer lưu trữ dữ liệu hợp quy cách vào một biến cục bộ cho việc sử dụng sau này. Khi tất cả các bước trên đã hoàn thành, sự kiện OnPreRender được phát sinh trên tất cả các Web Parts cũng như các điều khiển của chúng.
Lưu ý quan trọng ở đây là tất cả các phương thức và sự kiện được liệt kê ở trên thì chỉ sự kiện CellReady của provider và phương thức CellReady của consumer là thực sự cần thiết.