I have two radio buttons both set as async triggers for an update panel and problem is that first time one is clicked the CheckedChanged event fires but then no matter which radio button is clicked the event never fires again.
Markup:
<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>
Code:
protected void rdoDelivery_CheckedChanged(object sender, EventArgs e)
{
...only code that enables/disables the delivery form controls and validators goes here...
}
I have set a breakpoint inside rdoDelivery_CheckedChanged and it only hits the first time.
Any ideas?
Looking at the source (in the browser), ASP.NET is only generating a post back function
__doPostBackfor theRadioButtoncontrols which can possibly postback.The first
RadioButtoncontrol cannot postback (because it is already checked), and as such the__doPostBackis not generated.A work around is to add the two
RadioButtoncontrols to anotherUpdatePanel, setting theUpdateModeto Always. This will cause the RadioButtons to be updated (whenever they trigger the otherUpdatePanel) adding the__doPostBackfunction to the deselectedRadioButton.Example
Hope this helps.