2009-06-02 28 views

Trả lời

11

Bạn thường nên liên kết tại hoặc sau Tải(). Sự kiện Init() được thiết kế để cho phép bạn tạo ra bất kỳ điều khiển được tạo động nào trước khi sự ràng buộc xảy ra, để chúng tồn tại khi sự ràng buộc cần phải diễn ra. Load() không phải là lựa chọn duy nhất, tuy nhiên ... nếu bạn cần phải trì hoãn ràng buộc trên một điều khiển vì bất kỳ lý do gì, bạn cũng có thể ràng buộc trong sự kiện PreRender(). Cũng có thể thực hiện thêm thiết lập trong Load(), gọi phương thức DataBind() của trang và xử lý các sự kiện ràng buộc trang để liên kết theo một cách có cấu trúc hơn, nếu bạn cần.

+0

+1 để đề cập đến 'PreRender' (tôi bỏ qua đề cập đến nó) vì nó gọi' EnsureChildControls' đệ quy trên tất cả các trẻ em. – Cerebrus

+1

Bất kỳ hướng dẫn nào mặc dù thực hành tốt nhất? Với rất nhiều sự kiện để chọn từ ban đầu, có vẻ như không có sự lựa chọn rõ ràng nhất. Đặc biệt là PreRender so với kiểm soát xử lý sự kiện DataBinding. Argh, xin cám ơn MVC –

+1

Ditto @ MVC. : D Để thực hành tốt nhất ... bắt đầu với Load(), và tinh chỉnh khi cần thiết. Tải() nói chung là nơi tốt nhất để bắt đầu trừ khi bạn biết thực tế là bạn cần phải ràng buộc sau này, hoặc có một lý do cụ thể để kích hoạt trang tổng thể DataBind. Hầu hết thời gian, nếu bạn cần phải ràng buộc trong PreRender, bởi vì vấn đề thực thi và đặt hàng thường kết quả khi bất kỳ thứ gì bị ràng buộc với điều khiển phụ thuộc vào một số quá trình khác hoàn thành trước. – jrista

3

Nó sẽ phụ thuộc vào trường hợp cụ thể, tuy nhiên, câu trả lời phổ biến nhất sẽ là Page_Load vì đó thường là đủ cho hầu hết các kịch bản databinding.

Ngay cả đối với các tình huống phức tạp databinding, Page_Init sẽ không là một nơi thích hợp vì điều khiển container như GridView tải con cái của họ chỉ trong trường hợp Page_Load. Bạn cần phải đi xa hơn vòng đời để tiếp cận những đứa trẻ đó.

Trong trường hợp của tôi, tuy nhiên, câu trả lời sẽ là "không". Điều này là do tôi không bao giờ databind một điều khiển trực tiếp trong vòng Page_Load. Những gì tôi thay vì thích là có một phương pháp riêng biệt mà không Databinding và có thể được gọi là từ Page_Load hoặc bất kỳ chức năng khác nếu tôi cần phải ràng buộc lại sau khi postbacks.

Các vấn đề liên quan