2008-11-20 22 views
7

Tôi có một tình huống mà tôi cần làm việc với một DataGrid và thêm các cột động trong PageInit vì lưới có một vài yêu cầu có điều kiện mà nó phải xử lý. Tôi đang di chuyển dễ dàng với BoundColumns và ButtonColumns, những thứ này thật dễ dàng. Vấn đề là với việc tạo ra một TemplateColumn qua mã. Tôi đã tìm thấy các ví dụ trên mạng về việc tạo một lớp tùy chỉnh để thêm các điều khiển động bằng cách tạo một lớp có sử dụng triển khai thực hiện ITemplate. Điều đó làm việc, tuy nhiên, tôi đang đấu tranh với cách để các yếu tố databind.Cột ITemplate và DataGrid trong Codebehind

Trong lưới của tôi, tôi đã sử dụng <% = DataBinder.Eval (Container.DataItem, "MyValue")%> hoặc tương tự, nhưng đó không phải là một tùy chọn ở đây. Thùng chứa khi bên trong ITemplate cũng không có thuộc tính mục dữ liệu, vì vậy tôi không thể liên kết ở đó. Bất cứ ai có lời khuyên hoặc liên kết có thể giúp đỡ, tôi chỉ không tìm thấy những điều đúng trong google.

Trả lời

8

Bạn có thể đính kèm trình xử lý sự kiện vào sự kiện DataBinding của các điều khiển bạn tạo trong ITemplate.InstantiateIn như trong this MSDN Article. Người gửi sẽ là điều khiển và thuộc tính NamingContainer sẽ là DataGridItem, có tham chiếu đến DataItem mà bạn có thể sử dụng để lấy bất kỳ dữ liệu nào bạn cần.

+0

Tuyệt vời! Đó là bài viết tôi đang tìm kiếm. Thật là một PITA chính để thực hiện việc này .... –

+0

+1 cho liên kết hữu ích, Bạn cũng nên xem http://aspalliance.com/1125_Dynamically_Templated_GridView_with_Edit_Delete_and_Insert_Options.3 này –

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