我试图从嵌套的中继器访问父中继器的DataItem,但总是得到空白/没有返回任何内容。
基本示例:
<asp:Repeater ID="Products">
<ItemTemplate>
<%# Eval("product_name") %>
<asp:Repeater ID="SubProducts">
<ItemTemplate>
<%# DataBinder.Eval(Container.Parent.Parent, "DataItem.product_name")%>
<%# Eval("subproduct_name")
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
我尝试过的格式:
<%# DataBinder.Eval(Container, "NamingContainer.NamingContainer.DataItem.MyRepeaterDataItem")%>
<%# DataBinder.Eval(Container.Parent.Parent, "DataItem.prod_name")%>
我还尝试在上面的每一个中用Parent.Parent替换NamingContainer。
这些都是类似的主题,对我不起作用:
How to read a dataitem from a parent repeater?
How to access Parent repeater id from code behind(虽然我不想从代码后面访问)
1条答案
按热度按时间g52tjvyc1#
嗯,你有的东西应该能用。
然而,这将取决于你如何绑定(饲料)的数据,以父中继器。例如,如果向中继器提供“读取器”,则对于每一行数据绑定,“数据项”都不存在。
比如说,这对我很有效:
我们有一些酒店,并为每个酒店,我们列出了预订的人。
我很确定被馈送的数据源必须是不可计数的。
验证码:
而绑定到main(父中继器)的行数据如下:
我的“通用”助手例程(MyRst)只是返回一个数据表,那就是:
所以,你有什么看起来不错,但这将取决于你如何填写主中继器。
请注意,在行数据绑定事件中,我既有repeater行,也有完整的数据行-包括repeater 1中未显示的列。
该FULL数据行(DataRowView)仅在绑定过程中可用,一旦数据绑定完成,THEN将超出范围。如果你给一个列表视图、网格视图或中继器一个“阅读器”,这是允许的吗?则如上所述,中继器将工作,但在绑定(行)事件期间DatarowView项不存在。