2010-10-22 60 views

Trả lời

20

This article có thể giúp bạn hiểu. Trích dẫn:

Vậy biểu thức này chính xác là gì? Các <% #%> có nghĩa là đây là một biểu thức ràng buộc dữ liệu và vùng chứa.DataItem là bí danh cho mục hiện tại trong nguồn dữ liệu. Nói cách khác, nếu bạn đang ràng buộc với một tập hợp các đối tượng Container.DataItem là hàng hiện tại của bộ sưu tập đó .

This blog entry trợ giúp khi nào nên sử dụng. Trích dẫn:

Container.DataItem là bí danh thời gian chạy cho DataItem cho danh sách bị ràng buộc này . Đối với lưới hiển thị 10 hàng của dữ liệu , đây là một hàng từ nguồn dữ liệu. Loại thực tế của DataItem được xác định theo loại nguồn dữ liệu. Ví dụ, nếu nguồn dữ liệu là một Dataview, kiểu DataItem là DataRowView. Nếu loại nguồn dữ liệu là một chuỗi các chuỗi, loại DataItem là Chuỗi. Nếu nguồn dữ liệu là bộ sưu tập của đối tượng được nhập mạnh (ví dụ: đối tượng "Nhân viên"), loại DataItem là Nhân viên.

Mỗi trường hợp này yêu cầu một biểu thức dữ liệu hơi khác nhau , với sự khác biệt hơn nữa giữa VB và C#.

+0

những gì hiện các mục hiện tại trong nguồn dữ liệu chính xác nghĩa là gì? –

+2

@chandan - Vâng, nếu một mảng của chuỗi {'a', 'b', 'c'}, thì currentitem là chuỗi đang xử lý. Nó có thể là a, b hoặc c tại thời điểm đó. Điều này có trả lời câu hỏi của bạn không? –

+0

bạn có nghĩa là mục hiện tại đang được xử lý trong thời gian chạy để ràng buộc một dữ liệu cụ thể từ nguồn dữ liệu. –

4

Tôi đã chạy qua cùng một câu hỏi này đặc biệt trong ngữ cảnh cố gắng truy cập Container.DataItem từ bên trong mã phía sau. Container tồn tại trong mã aspx/ascx nhưng không tồn tại trong mã phía sau. Bằng cách xem mã C# đã tạo, tôi thấy rằng đó là tham chiếu được đúc thành BindingContainer trên điều khiển cụ thể bị ràng buộc.

tương đương code-behind mã cho Container.DataItem là thế này:

var ddl = (DropDownList) source; 
var dataItem = ((RepeaterItem) ddl.BindingContainer).DataItem;