2011-04-14 15 views
13

Hola tengo una lista de botones de radio y trato de configurar uno de los botones de radio para seleccionar en función de una variable de sesión, pero resulta imposible.Establecer lista de botones de radio seleccionados de Codebehind

<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> 

I.e ¿Cómo puedo configurar la opción 2 para seleccionar en el código?

+0

listitem no tiene la propiedad de identificación –

Respuesta

13

Usted podría hacer:

radio1.SelectedIndex = 1; 

pero esta es la forma más simple y lo más probable es llegar a ser problemático, ya que la interfaz de usuario crece. Digamos, por ejemplo, si un miembro del equipo inserta un elemento en el RadioButtonList anterior option2 pero no sabe que usamos números mágicos en código subyacente para seleccionar - ¡ahora la aplicación selecciona el índice incorrecto!

Quizás desee examinar el uso de FindControl para determinar el ListItem realmente requerido, por nombre, y seleccionarlo apropiadamente. Por ejemplo:

//omitting possible null reference checks... 
var wantedOption = radio1.FindControl("option2").Selected = true; 
+0

Me pregunto cómo es posible hacer un FindControl en un ListItem ya que carece de la propiedad ID. Solo las propiedades que puedo recordar son Seleccionadas, Activadas, Texto y Valor. ¿Algunas ideas? – marquito

+0

listitem no tiene la propiedad de identificación, por lo tanto, elegiría http://stackoverflow.com/a/11582680/1271898 (respuesta de Marquito) –

17

La mejor opción, en mi opinión, es el uso de la propiedad Value para la ListItem, que está disponible en el RadioButtonList.

Debo señalar que ListItem hace NO tienen una propiedad de identificación.

Así, en su caso, para seleccionar el segundo elemento (opcion2) que serían:

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

Alternativamente, sin embargo, en gran medida la misma línea que puede suministrar un int a 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; 
+0

Gracias por la edición, + Ryan. Debería haberlo hecho. =) – marquito

13

Pruebe esta opción:

radio1.Items.FindByValue("1").Selected = true; 
+0

Esta solución funcionó para mí, mientras que Marquito no lo hizo por alguna razón. La razón podría ser porque había establecido

0
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 

// si selecciona otro aumento botón de radio [0] a [1] o [2] como esto

+0

Añadir explicación – NSNoob

+0

radio_btn_lst: su ID de radiobuttonlist –

0

Podemos cambiar el artículo por valor, aquí está el truco:

radio1.ClearSelection(); 
radio1.Items.FindByValue("1").Selected = true;// 1 is the value of option2