我有两个单选按钮都设置为更新面板的异步触发器,问题是第一次单击CheckedChanged事件时会触发,但无论点击哪个单选按钮,事件都不会再次触发.
标记:
<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>
Run Code Online (Sandbox Code Playgroud)
码:
protected void rdoDelivery_CheckedChanged(object sender, EventArgs e)
{
...only code that enables/disables the delivery form controls and validators goes here...
}
Run Code Online (Sandbox Code Playgroud)
我在rdoDelivery_CheckedChanged中设置了一个断点,它只在第一次出现.
有任何想法吗?
jda*_*ies 15
查看源代码(在浏览器中),ASP.NET仅为可能回发__doPostBack的RadioButton控件生成回发函数.
第一个RadioButton控件不能回发(因为它已经被检查),__doPostBack因此不会生成.
解决方法是将两个RadioButton控件添加到另一个控件UpdatePanel,将"设置"设置UpdateMode为"始终".这将导致RadioButtons被更新(无论何时触发另一个UpdatePanel)将该__doPostBack函数添加到取消选择RadioButton.
例
<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>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.