2013-04-23 63 views
2

我有这样的代码:在另一个中继器内动态绑定中继器?

<asp:Repeater id="repeaterCategories" runat="server"> 
    <ItemTemplate> 
     <div class="categorie-item"> 
      ... 

      <asp:Repeater id="repeaterSubCategories" runat="server"> 
       <ItemTemplate> 
        ... 
       </ItemTemplate> 
      </asp:Repeater> 
     </div>      
    </ItemTemplate> 
</asp:Repeater> 

repeaterSubCategories必须repeaterCategories.SubCategories,每个repeaterCategories。所以我必须动态地绑定一个子类别列表(对于每个第一个转发器迭代)。

我可以做到吗?怎么样?

回答

5

如果你有一个嵌套的中继器是这样的:

<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound"> 
    <ItemTemplate> 
     <asp:Repeater ID="Repeater2" runat="server"></asp:Repeater> 
    </ItemTemplate> 
</asp:Repeater> 

您可以使用此绑定到它:

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    var data = ((MyClass)e.Item.DataItem).Subcategories; 
    var repeater2 = (Repeater)e.Item.FindControl("Repeater2"); 
    repeater2.DataSource = data; 
    repeater2.DataBind(); 
} 
+1

uhm,但是我怎样才能为每个'Repeater2'绑定'Repeater1.SubCategories'? – markzzz 2013-04-23 13:32:45

+0

编辑我的答案,包括如何将'e'的'DataItem'转换为您的班级和子类别。 – 2013-04-23 13:35:04

+0

完美!!!!谢谢! – markzzz 2013-04-23 13:37:07