我在转发器内有一个转发器。其中父中继器绑定到一个Datatble,它有一个Datatable其中的列。
我想绑定子中继器到父中继器的datarow中的datatable列
这可能吗?我想我可以这样直接在aspx文件像:
DataSource =“<%#DataBinder.Eval(Container.DataItem,”Products“)%>”但它似乎不工作。
解决方法
在父中继器中,将一个方法附加到OnItemDataBound事件,并在该方法中,找到嵌套的重复器和数据绑定它。
示例(.aspx):
<asp:Repeater ID="ParentRepeater" runat="server" OnItemDataBound="ItemBound"> <ItemTemplate> <!-- Repeated data --> <asp:Repeater ID="ChildRepeater" runat="server"> <ItemTemplate> <!-- Nested repeated data --> </ItemTemplate> </asp:Repeater> </ItemTemplate> </asp:Repeater>
示例(.cs):
protected void Page_Load(object sender,EventArgs e) { if (!IsPostBack) { ParentRepeater.DataSource = ...; ParentRepeater.DataBind(); } } protected void ItemBound(object sender,RepeaterItemEventArgs args) { if (args.Item.ItemType == ListItemType.Item || args.Item.ItemType == ListItemType.AlternatingItem) { Repeater childRepeater = (Repeater)args.Item.FindControl("ChildRepeater"); childRepeater.DataSource = ...; childRepeater.DataBind(); } }