我目前有一个转发器控件,在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()之后;然后开始工作。
我不知道为什么,但嘿,它已经解决了。它现在成功传递了价值。我想这与页面生命周期有关。
答案 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事件来实现此功能,以便您可以为控件设置动态属性。