Установить Radiobuttonlist выбранный из Codebehind - PullRequest
17 голосов
/ 14 апреля 2011

Эй, у меня есть список радиокнопок и я пытаюсь установить один из радиокнопок на выбранный на основе переменной сеанса, но это невозможно.

<asp:radiobuttonlist id="radio1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged">
   <asp:listitem id="option1" runat="server" value="All"/>
   <asp:listitem id="option2" runat="server" value="1" />
   <asp:listitem id="option3" runat="server" value="2" />
</asp:radiobuttonlist> 

Т.е. как я могу установить вариант 2 для выбранного в коде позади?

Ответы [ 5 ]

19 голосов
/ 20 июля 2012

На мой взгляд, лучше всего использовать свойство Value для ListItem, которое доступно в RadioButtonList.

Я должен отметить, что ListItem имеет НЕ свойство ID.

Итак, в вашем случае, выберите второй элемент (option2), который будет:

// SelectedValue expects a string
radio1.SelectedValue = "1"; 

В качестве альтернативы, вы можете указать int для SelectedIndex.

// SelectedIndex expects an int, and are identified in the same order as they are added to the List starting with 0.
radio1.SelectedIndex = 1; 
15 голосов
/ 14 апреля 2011

Вы можете сделать:

radio1.SelectedIndex = 1;

Но это самая простая форма, которая, скорее всего, станет проблематичной по мере роста вашего пользовательского интерфейса. Скажем, например, если член команды вставляет элемент в RadioButtonList выше option2, но не знает, что мы используем магические числа в выделенном коде для выбора - сейчас приложение выбирает неправильный индекс!

Может быть, вы захотите изучить использование FindControl , чтобы определить ListItem, действительно требуемый, по имени и выбору соответствующим образом. Например:

//omitting possible null reference checks...
var wantedOption = radio1.FindControl("option2").Selected = true;
14 голосов
/ 29 января 2013

Попробуйте эту опцию:

radio1.Items.FindByValue("1").Selected = true;
2 голосов
/ 29 октября 2017

Мы можем изменить элемент по значению, вот хитрость:

radio1.ClearSelection();
radio1.Items.FindByValue("1").Selected = true;// 1 is the value of option2
0 голосов
/ 28 января 2016
var rad_id = document.getElementById('<%=radio_btn_lst.ClientID %>');
var radio = rad_id.getElementsByTagName("input");
radio[0].checked = true;

//this for javascript in asp.net try this in .aspx page

// если вы выберете другую радиокнопку, увеличьте [0] до [1] или [2], как это

...