2010-12-13 61 views
6

我目前有一箇中繼器控件,並且在itemtemplate中有一個用戶控件。此用戶控件呈現正確,但我想分配一個數據項到中繼器控件中的一個屬性。在ASP.NET中繼器控件的usercontrol中動態分配屬性

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

的requestId只是一個Int32。它只是不分配它。

我可以把eval放在itemcontrol的usercontrol外面,它正確地輸出正確的id。

如果我刪除整個EVAL,只需鍵入一個數字,然後它工作正常。

任何幫助表示讚賞。

[UPDATE]:問題解決

在我正在使用EntityDataSource和此自動綁定到中繼器。它從屏幕上的數據庫中打印出所有信息,沒有任何代碼隱藏。但是當我把代碼放在Repeater1.DataBind()後面時,然後它開始工作。

我不知道爲什麼,但嘿它已經解決了。它現在成功地通過了該值。我想這與頁面生命週期有關。

+0

沒有任何工作仍在進行中。當我使用Eval時,RequestId不會被設置。當我在用戶控件上方執行<%#Eval(「RequestId」)%>時,只需在開放空間中打印完美即可。如果我硬編碼數字,例如RequestId =「2」它工作正常。但如果按上述方式完成則不起作用。 – 2010-12-13 13:55:03

+0

您的代碼中存在拼寫錯誤。 %>之後不應該有結案嗎? – Skorpioh 2010-12-13 09:56:44

回答

4

如果你只是爲int的中繼集合捆綁,則需要使用此:

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

而且不要忘記調用DataBind()用於中繼器或頁面那裏是一箇中繼器控制。

2

最後缺少'嗎?

變化如下:

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

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

只是在我的代碼複製錯字,它有兩個引號 – 2010-12-13 10:17:38

0

您可以通過使用Repeater控件的ItemDataBound事件,這樣就可以設置控件的動態屬性實現這一點。