1

内部の OnItemDataBound イベント (itemtype) は 2 回ヒットする必要があります。ここでは 2 人の子がいます。しかし、私が何をしようとしても、それは一度しかヒットされていません。何かご意見は?

データ構造: 親 A

子供 X Y

フロントエンド:

<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;
  }
}
4

1 に答える 1

2

3 つのアイテムがあると思いますが、イベントは 3 回ではなく 2 回発生します。

試すif (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

于 2012-04-05T16:20:22.633 に答える