У меня есть 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();
}
}
Надеюсь, кода хватит. Все отлично работает, когда я не устанавливаю SelectedItem в RadioButtonList, но мне нужно его установить.
Вот ссылка на кого-то, у кого такая же проблема. Это связано с ASP.NET AJAX. Нажмите здесь Спасибо, ~ ck в Сан-Диего