2011-11-08 16 views
4

2つのラジオボタンが両方ともアップデートパネル用の非同期トリガーとして設定されていますが、初めてCheckedChangedイベントが発生しましたが、クリックしてもイベントは再び発生しません。ASP.NET 4.0ラジオボタンが変更されたイベントを1回だけチェックしました

マークアップ:

<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はポストバック機能__doPostBackを生成し、RadioButtonコントロールのポストバックが可能です。

最初のRadioButtonコントロールはポストバックできません(既にチェックされているため)__doPostBackは生成されません。

回避策2つのRadioButtonコントロールを別のUpdatePanelに追加し、UpdateModeをAlwaysに設定します。これにより、RadioButtonsは、のいずれかをトリガするたびに更新され、選択されていないRadioButton__doPostBack関数が追加されます。

<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(\'" ( "_"、 "$")& "\ '、\' \ ')、0)") – johna

+0

この解決策は私のためには機能しませんでした。私のラジオボタンは既にアップデートパネルの内側にありました。私は個々のラジオボタン(彼らはページ上の別の場所にあった)に更新パネルを追加しようとしましたが、動作させることができませんでした。しかし、少なくとも私は問題が今何かを知っています。役に立つ情報をありがとう。 – Sal

+0

私は同じグループ名とUpdateMode = "Always"のそれぞれに1つのRadioButtonを持つ2つのアップデートパネルを持っています。私は自分の問題を解決しました。ありがとう、男性 –

関連する問題