2012-04-05 84 views
1

innner OnItemDataBound event(itemtype)should be hit twice,as here I have 2 children。 但无论我尝试,它只被击中一次。有什么想法吗?itemtemplate in inner nested repeater can not be fired properly

数据结构: 家长 一个

儿童 X Ÿ

前端:

<asp:Repeater ID="ParentRepeater" runat="server" OnItemDataBound="ItemBound"> 
    <ItemTemplate> 
     <!-- Repeated data --> 
     <asp:Repeater ID="ChildRepeater" runat="server" OnItemDataBound="InnerItemBound"> 
      <ItemTemplate> 
       <asp:HiddenField ID="hdxyz" runat="server" Value="false"/> 
      </ItemTemplate> 
     </asp:Repeater> 
    </ItemTemplate> 
</asp:Repeater> 

后端:

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) 
     { 
      Repeater childRepeater = (Repeater)args.Item.FindControl("ChildRepeater"); 
      childRepeater.DataSource = ...; 
      childRepeater.DataBind(); 
     } 
    } 


protected void InnerItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 

    if (e.Item.ItemType == ListItemType.Item) 
    { 
    //Should be hit twice, as here I have 2 children. 
    //But whatever I try, it only hit once. 
    bindHiddenFieldInRepeater(e, "hdxyz", "hdEventID"); 

    return; 
    } 
} 

回答

2

我猜我有你'哈哈ve 3项目,事件将被解雇两次,而不是三次。

尝试if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

+1

这真是一个很棒的提示。我应该在2小时前发布这个问题。但为什么?我把控制放在itemtemplate而不是一个AlternatingItemTemplate模板中。 – ValidfroM 2012-04-05 16:23:03

相关问题