2011-11-08 2 views
4

업데이트 패널에 대해 두 개의 라디오 버튼이 둘 다 비동기 트리거로 설정되어 있으며 처음으로 CheckedChanged 이벤트가 발생했지만 아무런 라디오 버튼이 없어도 문제가 발생합니다 이벤트를 다시 클릭하면 다시 발생하지 않습니다.ASP.NET 4.0 라디오 버튼이 변경된 이벤트를 한 번만 확인했습니다.

마크 업 :

<asp:RadioButton ID="rdoDeliveryBilling" runat="server" Checked="true" GroupName="DeliveryAddress" Text="Deliver to this address" AutoPostBack="true" OnCheckedChanged="rdoDelivery_CheckedChanged" /> 
<asp:RadioButton ID="rdoDeliveryShipping" runat="server" GroupName="DeliveryAddress" Text="Deliver to a different address" AutoPostBack="true" OnCheckedChanged="rdoDelivery_CheckedChanged" /> 
<asp:UpdatePanel ID="panDeliveryAddress" runat="server"> 
<ContentTemplate> 
    ...delivery details form controls and validators goes here... 
</ContentTemplate> 
<Triggers> 
<asp:AsyncPostBackTrigger ControlID="rdoDeliveryBilling" EventName="CheckedChanged" /> 
<asp:AsyncPostBackTrigger ControlID="rdoDeliveryShipping" EventName="CheckedChanged" /> 
</Triggers> 
</asp:UpdatePanel> 

코드 :

protected void rdoDelivery_CheckedChanged(object sender, EventArgs e) 
{ 
    ...only code that enables/disables the delivery form controls and validators goes here... 
} 

내가 rdoDelivery_CheckedChanged 내부에 중단 점을 설정하고 그 첫 번째 시간을 안타.

아이디어가 있으십니까?

답변

13

소스 (브라우저에서)를 보면 ASP.NET은 포스트 백 기능이있는 RadioButton 컨트롤에 대해서만 포스트 백 기능 __doPostBack을 생성합니다.

첫 번째 RadioButton 컨트롤은 이미 체크되었으므로 다시 게시 할 수 없으므로 __doPostBack은 생성되지 않습니다.

두 개의 RadioButton 컨트롤을 다른 UpdatePanel에 추가하고 UpdateMode을 Always로 설정하면 문제가 해결됩니다. 이렇게하면 RadioButtons가 기능을 선택 해제 된 RadioButton에 추가하여 업데이트됩니다 (다른 UpdatePanel을 트리거 할 때마다). 이 도움이

<asp:UpdatePanel ID="UpdatePanelCheckBoxes" runat="server" UpdateMode="Always"> 
    <ContentTemplate> 
     <asp:RadioButton ID="rdoDeliveryBilling" runat="server" Checked="true" GroupName="DeliveryAddress" Text="Deliver to this address" AutoPostBack="true" OnCheckedChanged="rdoDelivery_CheckedChanged" /> 
     <asp:RadioButton ID="rdoDeliveryShipping" runat="server" GroupName="DeliveryAddress" Text="Deliver to a different address" AutoPostBack="true" OnCheckedChanged="rdoDelivery_CheckedChanged" />    
    </ContentTemplate> 
</asp:UpdatePanel> 

희망.

+0

이 문제를 해결할 수 있도록 도와 주셔서 감사합니다. 당신이 제안한 라디오 버튼을 업데이트 패널에 넣거나, 누락 된 onclick을 추가하는 또 다른 해결책을 찾았습니다 : radiobutton.Attributes.Add ("onclick", "javascript : setTimeout ('__ doPostBack (\'" radiobutton.ClientID.Replace ("_", "$") & "\ ', \'\ '), 0)") – johna

+0

이 솔루션은 저에게 효과적이지 않았습니다. 내 라디오 버튼이 이미 업데이트 패널 안에있었습니다. 개별 라디오 버튼 (페이지의 다른 위치에 있음)에 업데이트 패널을 추가하려고 시도했지만 작동시키지 못했습니다. 그러나 적어도 나는이 문제가 지금 무엇인지 압니다. 유용한 정보 주셔서 감사합니다. – Sal

+0

동일한 그룹 이름에 각각 하나의 RadioButton이있는 두 개의 업데이트 패널이 있으며 UpdateMode = "Always"로 문제를 해결했습니다. 고마워요 남자들 –

관련 문제