可能重复:
Accessing parent data in nested repeater, in the HeaderTemplate
我有一个嵌套的中继器正在被数据库..。假设顶级中继器是一个OrderRow,内部中继器绑定到我的DB中的LineItem行。ASPX是这样的:
<asp:Repeater ID="rptOrder" runat="server">
<ItemTemplate>
<%# Eval("OrderID") %>:<br/>
<asp:Repeater ID="rptLineItems" runat="server">
<ItemTemplate>
<%# Eval("SomeColumn1"); %>
<%# Eval("SomeColumn2"); %>
<%# Eval("SomeColumn3"); %>
</ItemTemplate>
<FooterTemplate>
<asp:Button ID="btnAddLine" runat="server" CommandArgument=<%# ???? %> />
</FooterTemplate>
</asp:Repeater>
</ItemTemplate
</asp:Repeater>
现在,内部页脚上的按钮将用于添加一个新的行项.但是命令参数需要是来自外部中继器的OrderID,因此我们知道要添加到哪个顺序。显然,普通的Eval()调用在这里不能工作,因为它将内部中继器的DataRowView作为源,实际上不会,因为它在页脚中。我怎么得到这个价值?我必须在外部中继器的ItemDataBound事件中动态地设置这个值吗?
发布于 2011-10-05 01:16:37
由于调用是串行的,所以可以使用后面的代码保存最后一个订单id,然后使用它。
我的想法是。
<asp:Repeater ID="rptOrder" runat="server">
<ItemTemplate>
<%#GetOrderID(Container.DataItem)%><br />
<asp:Repeater ID="rptLineItems" runat="server">
<ItemTemplate>
<%# Eval("SomeColumn1"); %>
<%# Eval("SomeColumn2"); %>
<%# Eval("SomeColumn3"); %>
</ItemTemplate>
<FooterTemplate>
<asp:Button ID="btnAddLine" runat="server" CommandArgument=<%=cLastOrderID%> />
</FooterTemplate>
</asp:Repeater>
</ItemTemplate
</asp:Repeater>
随时待命
public int cLastOrderID = -1;
protected string GetOrderID(object oItem)
{
cLastOrderID = (int)DataBinder.Eval(oItem, "OrderID");
return cLastOrderID.ToString();
}
这里我要做的是调用GetOrderID返回OrderID,并将其保存为全局值,然后在页脚中使用这个全局值。希望这能帮到你。
https://stackoverflow.com/questions/7654949
复制相似问题