2010-12-13 30 views
6

Tôi hiện có một điều khiển lặp lại và bên trong itemtemplate Tôi có một usercontrol. Điều này usercontrol ám một cách chính xác, nhưng tôi đang cố gắng để chỉ định một dataitem đến một tài sản trong kiểm soát lặp lại.Tự động gán một thuộc tính trong một điều khiển người dùng trong điều khiển lặp ASP.NET

<asp:Repeater ID="Repeater1" DataSourceID="EntityDataSource" runat="server"> 
    <ItemTemplate> 
    <uc1:Request ID="Request1" runat="server" RequestId='<%# Eval("RequestId") %>' /> 
</ItemTemplate> 

RequestId chỉ là một Int32. Nó không chỉ định nó.

Tôi có thể đặt eval bên ngoài của usercontrol chỉ trong itemtemplate và nó kết quả đầu ra đúng id.

Nếu tôi xóa toàn bộ eval và chỉ nhập một số vào thì nó hoạt động tốt.

Bất kỳ trợ giúp đánh giá cao.

[UPDATE]: Issue Giải Quyết

Tôi đã sử dụng một EntityDataSource và điều này tự động binded đến repeater. Nó in ra tất cả các thông tin từ cơ sở dữ liệu trên màn hình mà không có bất kỳ codebehind. Nhưng khi tôi đặt trong mã đằng sau Repeater1.DataBind(); sau đó nó bắt đầu hoạt động.

Tôi không biết tại sao, nhưng quá trình này đã được giải quyết. Nó bây giờ thành công vượt qua giá trị thông qua. Tôi tưởng tượng nó có liên quan đến vòng đời của trang.

+0

Không có gì vẫn hoạt động. RequestId chỉ không được thiết lập khi tôi sử dụng Eval. Khi tôi làm <% # Eval ("RequestId")%> ngay phía trên usercontrol vì vậy chỉ trong không gian mở nó in hoàn hảo trên màn hình. Nếu tôi viết mã số khó, ví dụ: RequestId = "2" nó hoạt động tốt. Nhưng nó không hoạt động khi thực hiện như trên. –

+0

Bạn có lỗi đánh máy trong mã của mình. Không nên đóng cửa 'ngay sau%>? – Skorpioh

Trả lời

4

Nếu bạn chỉ ràng buộc với bộ sưu tập lặp lại của int, bạn cần sử dụng này:

<uc1:Request ID="Request1" runat="server" RequestId='<%# Container.DataItem %>' /> 

Và đừng quên gọi DataBind() cho repeater hoặc cho Trang, nơi có một điều khiển lặp.

2

Bạn có thiếu ' ở cuối không?

thay đổi sau đây:

RequestId='<%# Eval("RequestId") %> /> 

để

RequestId='<%# Eval("RequestId") %>' /> 
+0

chỉ là lỗi đánh máy khi sao chép mã của tôi, nó có cả hai dấu ngoặc kép –

0

Bạn có thể thực hiện điều này bằng cách sử dụng sự kiện ItemDataBound Repeater control, vì vậy mà bạn có thể thiết lập thuộc tính năng động để kiểm soát.

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