子代中继器从代码隐藏中的父中继器获取值

时间:2011-10-31 15:57:50

标签: c# asp.net repeater datasource nested-repeater

我想要做的就是这个

       <asp:Repeater ID="ParentRepeater" runat="server" OnItemDataBound="ItemBound">
            <ItemTemplate>
               <asp:Repeater ID="Repeater_SideMenu_Guides_Medlem" runat="server">
                   <ItemTemplate>
                   </ItemTemplate>
               </asp:Repeater>
            </ItemTemplate>
        </asp:Repeater>

代码隐藏

 ParentRepeater.DataSource = CraftGuides.GetAllGroups();
 ParentRepeater.DataBind();

 protected void ItemBound(object sender, RepeaterItemEventArgs args) 
    { 
        if (args.Item.ItemType == ListItemType.Item) 
        { 
            Repeater childRepeater = (Repeater)args.Item.FindControl("ChildRepeater"); 
            childRepeater.DataSource = CraftGuides.GetGuidesByGroupID( Insert ID from Parent Here ); 
            childRepeater.DataBind(); 
        } 
    }

现在,我不知道从子级内部的父级获取ID以从数据库中收集数据

1 个答案:

答案 0 :(得分:3)

假设您有Group个对象,则可以使用以下内容:

var item = args.Item;
var dataItem = item.DataItem as Group;

然后,您可以轻松获取群组对象的ID并将其传递到GetGuidsByGroupID()

我喜欢使用as关键字,因为如果转换失败,它将返回null。如果失败,使用(Group)item.DataItem会抛出异常。