3

cbxSupplement 트리거 업데이트 패널을 새로 고치려고하지만 EventName을 잘못 사용하고 있거나 CheckBox으로 설정하는 것이 불가능한 지 확실하지 않습니다. CheckBoxButton으로 바꾸면 제대로 작동합니다. 중계기 내부UpdatePanel 외부의 Repeater에서 AsyncPostBackTrigger

<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> 

답변

9

CheckBox부터 컨트롤은 ScriptManager.RegisterAsyncPostBackControl 방법을 등록해야합니다 디자인 타임에 사용할 수 없습니다. 이 방법을 사용하려면 페이지 또는 마스터 페이지에서 ScriptManager이 필요합니다.

Repeater.OnItemCreated 이벤트에 대한 처리기를 만들고 새로 만든 CheckBox 등록기입니다. 코드는 (CheckBox true로 설정 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> 

Codebehind가 :

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

이 당신이 원하는 것을해야한다.

+0

은 매력처럼 작동합니다. :) – Rainhider

관련 문제