在ASP.NET转发器控件中动态分配usercontrol中的属性

时间:2010-12-13 09:49:12

标签: c# asp.net user-controls

我目前有一个转发器控件,在itemtemplate中我有一个usercontrol。此usercontrol正确呈现,但我尝试将dataitem分配给转发器控件中的属性。

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

RequestId只是一个Int32。它只是没有分配它。

我可以将eval放在usercontrol之外的itemtemplate中,并正确输出正确的id。

如果我删除整个eval并只输入一个数字,那么它可以正常工作。

任何帮助表示感谢。

[更新]:解决问题

我正在使用EntityDataSource,这会自动绑定到转发器。它在屏幕上打印出数据库中的所有信息,没有任何代码隐藏。但是当我把代码放在Repeater1.DataBind()之后;然后开始工作。

我不知道为什么,但嘿,它已经解决了。它现在成功传递了价值。我想这与页面生命周期有关。

3 个答案:

答案 0 :(得分:4)

如果你只是使用int的repeater集合绑定,你需要使用它:

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

并且不要忘记为转发器或具有转发器控件的Page调用DataBind()。

答案 1 :(得分:2)

你最后错过了'吗?

更改以下内容:

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

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

答案 2 :(得分:0)

您可以使用Repeater控件的ItemDataBound事件来实现此功能,以便您可以为控件设置动态属性。