2010-12-13 48 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事件,这样就可以设置控件的动态属性实现这一点。

相关问题