在用户控件内引用父Repeater控件的DataItem

时间:2009-09-02 18:19:01

标签: c# asp.net user-controls repeater

我需要将用户控件放入转发器控件的模板中,并从转发器的数据源引用数据项。

我尝试过(忽略我正在使用的CMS平台特有的第二个演员):

<%# ((EPiServer.Core.PageData)((RepeaterItem)Container.Parent.NamingContainer).DataItem)["PageName"]%>

但是这会抛出以下错误:无法将“ASP.usercontrols_searchcontrols_searchresult_ascx”类型的对象强制转换为“System.Web.UI.WebControls.RepeaterItem”

Searchresult_ascx是另一个包含实际转发器的用户控件。

3 个答案:

答案 0 :(得分:4)

我会在usercontrol上添加一个属性来保存容器 - 就像这样:

<asp:repeater ... >
  <my:usercontrol containerdata='<%# Container.DataItem %>' ... />
</asp:repeater>

当然,在用户控件数据绑定中,你要传递给PageData项。

答案 1 :(得分:0)

听起来你在层次结构中有更多的父母可以获得所需的控制权。我经常在调试模式下使用立即窗口来查找我必须退出的深度,或者在网页上使用Trace =“True”并查看控制树以查看层次结构。从那以后你应该能够找出你的代码以获得正确的父控件。

答案 2 :(得分:0)

我会向转发器添加一个OnItemDataBound事件,并从那里将适当的数据绑定到用户控件。