2008-10-06 31 views
6

Tôi đang cố gắng tạo điều khiển tùy chỉnh mà "chế độ xem lưới" như kiểm soát nhưng cụ thể cho các đối tượng kinh doanh thực hiện một số giao diện tùy chỉnh nhất định.Làm cách nào để kích hoạt ViewState cho các điều khiển tùy chỉnh con khi bị tắt trong cha mẹ?

Khi thực hiện việc này, tôi đã gặp phải vấn đề sau.

Tôi có quyền kiểm soát rằng tôi đã vô hiệu hóa ViewState trên (và tôi không muốn kích hoạt lại nó) và nó có một điều khiển con mà tôi muốn bật ViewState. Tôi không thể có vẻ để có được các ViewState trên kiểm soát trẻ em để làm việc kể từ khi cha mẹ của nó bị vô hiệu hóa. Có ai có bất kỳ ý tưởng làm thế nào để có được điều đó để làm việc?

Trả lời

7

Bạn không thể bật chế độ xem trên một điều khiển nằm trong một điều khiển khác bị vô hiệu hóa chế độ xem.

Tùy chọn duy nhất của bạn là bật tính năng này cho điều khiển bên ngoài, sau đó tắt nó cho tất cả các điều khiển bên trong nó, ngoại trừ điều khiển bạn cần xem.

Bật thuộc tính ViewState trên bất kỳ vùng chứa nào sẽ ghi đè hành vi của tất cả các điều khiển trong đối tượng đó.

Chúc may mắn!

EDIT: Bạn có thể muốn nhìn vào CreateChildContols của bạn() phương pháp và liệt kê các điều khiển vô hiệu hóa ViewState từ đó cho mỗi người trong số các điều khiển trong tầm kiểm soát tùy chỉnh bằng cách sử dụng EnableViewState tài sản.

+1

Jason là chính xác, sau khi bị tắt ở trên bạn, bạn không thể bật thêm xuống. – Tom

0

Nếu bạn hài lòng đặt dữ liệu vào ViewState theo cách thủ công (thay vì để ASP.NET giữ nguyên trạng thái kiểm soát của bạn), Bạn có thể đặt các mục trực tiếp vào ViewState của trang, chứ không phải ViewState của bạn điều khiển.

I.e. thay vì nói:

this.ViewState["someKey"] = someValue; 

nói:

this.Page.ViewState["someKey"] = someValue; 

Hãy cẩn thận mặc dù - nếu bạn có nhiều hơn một ví dụ tầm kiểm soát của bạn trên trang web, bạn sẽ phải chắc chắn rằng họ sử dụng các phím khác nhau!

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