4

updatepanel の更新のトリガーを取得しようとしていますcbxSupplementが、使用方法が間違っているのEventNameか、それとも単に不可能なのかわかりませんCheckBox。に置き換えるCheckBoxと正常にButton動作します。

<asp:Repeater ID="repSupplements" runat="server">
    <ItemTemplate>
        <asp:CheckBox runat="server" ID="cbxSupplement" />
    </ItemTemplate>
</asp:Repeater>
<asp:UpdatePanel runat="server" ID="up1">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="repSupplements" EventName="CheckedChanged" />
    </Triggers>
    <ContentTemplate>
        //Get checked items
    </ContentTemplate>
</asp:UpdatePanel>
4

1 に答える 1

10

CheckBoxリピーター内のコントロールは設計時には使用できないため、それらを ScriptManager.RegisterAsyncPostBackControl メソッドで登録する必要があります。この方法ではScriptManager、ページまたはマスター ページのいずれかが必要です。

イベントのハンドラーを作成し、Repeater.OnItemCreatedそこに新しく作成した を登録しCheckBoxます。コードは次のとおりです (プロパティを true に設定するCheckBox必要があることに注意してください)。AutoPostBack

<asp:Repeater ID="repSupplements" runat="server" 
    OnItemCreated="repSupplements_ItemCreated">
    <ItemTemplate>
        <asp:CheckBox runat="server" ID="cbxSupplement" AutoPostBack="True" />
    </ItemTemplate>
</asp:Repeater>

<asp:UpdatePanel runat="server" ID="up1">
    <Triggers>

    </Triggers>
    <ContentTemplate>
        //Get checked items
    </ContentTemplate>
</asp:UpdatePanel>

コードビハインド:

protected void repSupplements_ItemCreated(object sender, RepeaterItemEventArgs e)
{
    var control = e.Item.FindControl("cbxSupplement");
    ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(control);
}

これはあなたが望むことをするはずです。

于 2013-03-06T21:06:12.617 に答える