0

ItemTemplate親リピーターの中にリピーターがネストされています。私は通常、それらをマークアップで宣言的にコントロールに接続します。

<asp:Repeater runat='server' id='myParentRepeater'>
    <ItemTemplate>
        <asp:Repeater runat='server' id='mynestedRepeater' OnItemCommand='myMethod'>
           ...
        </asp:Repeater>
        ...
    </ItemTemplate>
</asp>

ItemDataBound今日、コード ビハインド、具体的には親リピーターのメソッドでそれを行うことにしました。/

((Repeater)e.item.FindControl("MyParentRepeater")).ItemCommand += ...

しかし、この方法ではうまくいきません。マークアップを使用しない限り、イベント ハンドラーは起動しません。どうしてこれなの?または、それがうまくいくと仮定して、誰かが私が間違ったことを教えてもらえますか?

4

2 に答える 2

3

イベントは、すべてのポストバックではなく、データバインドされているItemDataBound場合にのみトリガーされます。Repeaterただし、ポストバックごとにイベントを再作成する必要があります。したがって、ItemCreated代わりにイベントを使用してください。

protected void myParentRepeater_ItemCreated(Object Sender, RepeaterItemEventArgs e) {
      if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
          ((Repeater)e.item.FindControl("MyParentRepeater")).ItemCommand += ...
      }
}    
于 2012-12-10T15:45:41.003 に答える
1

追加

 OnItemCommand="repNested_ItemCommand"

<asp:Repeater ID="rptNested" runat="server" OnItemCommand="repSales_ItemCommand">

分離コード:

Protected Sub repNested_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs)


 Select Case e.CommandName
// Do whatever you want
于 2012-12-11T15:17:15.217 に答える