ASP.NET RadioButtonList поможет. Если я установил selectedItem, этот элемент не реагирует на событие SelectedIndexChanged - PullRequest
0 голосов
/ 18 сентября 2009

У меня есть 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 в Сан-Диего

1 Ответ

3 голосов
/ 21 декабря 2011

Попробуйте это:

radiobutton.Items.FindByText("VALUE").Selected = true;
...