2011-10-31 39 views
2

我想要做的就是这个ChildRepeater正从ParentRepeater在代码隐藏价值

 <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父内部的孩子从数据库中收集数据

+0

当你说“我不知道[如何从小孩内部的父母获得ID'),你在说'ParentRepeater'吗?如果是这样,你的页面上有多少个中继器?通常,我会直接引用'ParentRepeater'。 – jwiscarson

+0

我不确定你的意思。我需要从ParentRepeater获取CraftGuides.GetAllGroups()中的对象的ID。如果这与你正在谈论的是一样的,那么你可以举个例子 –

回答

3

如果您有一个Group对象,可以使用以下内容:

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

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

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

+0

我不是很追随你,你能举一个例子,因为我是新来的c#^^ –

+0

如果我理解你在评论中的说明以上,然后Digbyswift的例子是正确的,并且上面粘贴的C#代码是您需要的。 – jwiscarson

+1

虽然我会补充说,我不喜欢'因为'因为Digbyswift喜欢它的原因。我宁愿得到'NullReferenceException'而不是神奇地看到一个空的'Repeater'或者获得远离源的另一个异常。 – jwiscarson