我的网络表单上有一个 RadioButtonList。我尝试了两种不同的方法来设置所选项目。我已经在标记和代码中尝试过,比如 Page_Load 事件。它设置和显示正确。我的问题是选定的单选按钮不再响应 SelectedIndexChanged 事件。其他项目按预期工作,如果我删除设置 selectedItem 的代码,则单选按钮按预期工作。有什么方法可以通过代码设置一个单选按钮,它的行为仍然符合我的预期。我猜,如果你强制选择一个按钮,那么它不会改变。有谁知道如何解决这个问题,以便我可以默认选择它,但仍然让它按照我想要的方式运行?
<asp:RadioButtonList ID="rblPaymentType" runat="server" AutoPostBack="True" RepeatDirection="Horizontal"
RepeatLayout="Flow">
<asp:ListItem Value="benefit" Text="Benefit" Selected="True"/>
<asp:ListItem Value="expense" Text="Expense" />
</asp:RadioButtonList>
这存在于我有一个事件的 ascx 中
public delegate void SwitchBenefitTypeHandler(object sender, EventArgs e);
public event SwitchBenefitTypeHandler SwitchedBenefit;
protected void Page_Load(object sender, EventArgs e)
{
WireEvents();
}
private void WireEvents()
{
rblPaymentType.SelectedIndexChanged += (sender, args) => SwitchedBenefit(sender, args);
}
然后在 aspx 上,我将处理函数连接到该事件。
if (header is PaymentHeader)
(header as PaymentHeader).SwitchedBenefit += (paymentForm as PaymentBaseControl).Update;
最后是处理函数
public override void Update(object sender, EventArgs e)
{
if (sender is RadioButtonList)
{
IsExpense = (sender as RadioButtonList).SelectedValue == "expense";
UpdateCalcFlag();
UpdateDropDownDataSources();
UpdatePaymentTypeDropDown();
ResetBenefitLabels();
FormatAmountTextBox();
}
}
我希望这是足够的代码。当我没有在 RadioButtonList 中设置 SelectedItem 但我需要设置它时,一切都很好。
这是一个有同样问题的人的链接。它与 ASP.NET AJAX 相关。点击这里 谢谢,~ck 在圣地亚哥