Не установленный переключатель RadioButtonList не запускает SelectedIndexChanged - PullRequest
1 голос
/ 04 апреля 2011

У меня есть RadioButtonList с некоторым фиксированным элементом и выбранным по умолчанию. Если я сниму флажок выделения с помощью javascript, при обратной передаче событие SelectedIndexChanged не будет запущено.

Я ожидаю, что SelectedIndexChanged вызывается, потому что индекс изменяется на -1.

это код Asp.Net

<asp:RadioButtonList ClientIDMode="Static" ID="RadioButtonList1" runat="server" 
    onselectedindexchanged="RadioButtonList1_SelectedIndexChanged">
    <asp:ListItem Value="1" Selected="True"></asp:ListItem>
    <asp:ListItem Value="2"></asp:ListItem>
</asp:RadioButtonList>

и код jquery

$('#RadioButtonList1 :radio:visible').attr('checked', false);

Насколько мне известно, этап сбора данных от отправки формы обрабатывается методом IPostBackDataHandler.LoadPostData .

Я извлек класс из RadioButtonList, чтобы проверить, когда вызывается LoadPostData, и заметил, что при выборе не радиокнопки метод не вызывается, и то же самое для события SelectedIndexChanged.

кажется, что если ключ RadioButtonList отсутствует в массиве Page.Request.Form.Keys, LoadPostData не вызывается.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 04 апреля 2011

Попробуйте установить AutoPostBack="true"

Пример:

<asp:RadioButtonList ClientIDMode="Static" ID="RadioButtonList1" runat="server" 
    onselectedindexchanged="RadioButtonList1_SelectedIndexChanged" AutoPostBack="true">
    <asp:ListItem Value="1" Selected="True"></asp:ListItem>
    <asp:ListItem Value="2"></asp:ListItem>
</asp:RadioButtonList>

В соответствии с документацией MSDN:

Получает или задает значение, указывающее, выполняется ли обратная передача вСервер автоматически происходит, когда пользователь меняет выбор списка.(Унаследовано от ListControl.)

...