2009-09-28 45 views
6

Estoy intentando acceder al valor de un radioButton seleccionado. Tengo una lista de botones de opción separados por encabezados secundarios (de ahí por qué no he usado una lista de radio)Acceso al valor de los controles creados dinámicamente C# asp.net

No sé cómo acceder al valor seleccionado ya que no estoy seguro del nombre que se le da porque es dinámico.

El siguiente código está en un bucle for y genera opciones de radio. Todas las opciones son para una selección de usuario requerida.

//add list to radio button list 
RadioButton button1 = new RadioButton { 
GroupName = "myGroup", 
Text = singleType.appTypeName, 
ID = singleType.appTypeID.ToString() 
}; 
radioArea.Controls.Add(button1); 
myLabel = new Label(); 
myLabel.Text = "<br />"; 
radioArea.Controls.Add(myLabel); 

Esta es la forma en que estoy tratando de acceder a él:

RadioButton myButton = (RadioButton) radioArea.FindControl("myGroup"); 

que dan cuenta de esto debe ser muy simple, pero todavía estoy en un estado mental PHP mucho y agradecería cualquier ayuda.

Gracias

Respuesta

9

Hola, me parece que está un poco confundido sobre lo que hacen las diversas propiedades del control de botón de radio y cómo generar el botón de opción correctamente.

La propiedad de ID es la clave aquí.

Debe establecer la propiedad de ID en una cadena única que luego use para acceder al control en la devolución de datos.

El GroupName es solo un alias para la propiedad de nombre estándar de un botón de opción y se usa para que cuando un usuario haga clic en un botón de opción en un grupo, solo se pueda seleccionar un botón de opción.

Por ejemplo:

//add list to radio button list 
RadioButton radioButton = new RadioButton(); 
radioButton.GroupName = "radioGroup"; 
radioButton.Text = singleType.appTypeID.ToString(); 
radioButton.ID = singleType.appTypeName; 

radioArea.Controls.Add(radioButton); 

Label label = new Label(); 
label.Text = "<br />"; 
radioArea.Controls.Add(label); 

En el ejemplo anterior he asignado singleType.appTypeName como ID, suponiendo que esto es único.

Entonces retrive el valor de devolución de datos ello, assumnig que singleType.appTypeName = "mySuperApp":

RadioButton radioButton = (RadioButton) radioArea.FindControl("mySuperApp"); 

ya se puede acceder a la variable radioButton para comprobar qué nombre de grupo que tiene, obtener su valor y verificación que está marcado.

Tendrá que pasar el cursor por los botones de radio para averiguar cuál está marcado. Una forma fácil de hacerlo es pasar los controles secundarios del radiorearea y verificar el control de eack para ver si es un botón de opción y si está marcada. Otra opción es dar a cada ID un prefijo, es decir ID = "RAD _" + singleType.appTypeName y recorrer el objeto Request y hacer coincidir cada uno con el sufijo correcto.

+0

'System.Web.UI.WebControls.RadioButton' no contiene una definición para 'Valor' – Andrew

+0

Whooops! ¡Oh, la vergüenza! –

+0

Se corrigió mi cerebro y los dedos no estaban en el error de sincronización –

3

El método FindControl que está utilizando, espera que usted pueda pasar que el ID que fue asignado para controlar cuando lo creó.

Así que para su ejemplo del RadioButton.ID debe ser igual a singleType.appTypeID.ToString()

Espero que esto ayude.

+0

cuando veo el código fuente del código generado el singleType.appTypeID.ToString() es el valor de cada opción, no el ID. ¿Algunas ideas? – Andrew

+0

Su código asigna la identificación del botón de radio para ser singleType.appTypeID.ToString(). Tendrá que buscar esa identificación exacta en su llamada FindControl(). – womp

+0

@SocialAddict Cuando vea los RadioButtons tal como se muestran EN HTML, ¿en qué se configuran los ID? – rocka

Cuestiones relacionadas