Foros del Web » Programación para mayores de 30 ;) » .NET »

Como recoger el checked o no de un RadioButton

Estas en el tema de Como recoger el checked o no de un RadioButton en el foro de .NET en Foros del Web. Hola, buenos días. Resulta que tengo una aplicación web en la que en una de las páginas tengo un formulario. En dicho formulario tengo una ...
  #1 (permalink)  
Antiguo 27/07/2009, 06:47
 
Fecha de Ingreso: mayo-2009
Mensajes: 42
Antigüedad: 14 años, 10 meses
Puntos: 1
Como recoger el checked o no de un RadioButton

Hola, buenos días.

Resulta que tengo una aplicación web en la que en una de las páginas tengo un formulario. En dicho formulario tengo una serie de campos Textbox y 2 RadioButton.

La función de esto es rellenar el formulario y dar al botón enviar para que una vez hecho esto me redireccione a otra web y me ponga los datos introducidos previamente en el formulario anterior en una tabla de la nueva página.

Mi duda es como pasar o como llamar al valor de los radio button en la nueva página (dentro del codigo C#, en el Default3.aspx.cs), recoger si esta checkeado o no y colocarme en el campo de la tabla un "Sí" o un "No" dependiendo de su el usuario checkeo una opción u otra del formulario.

Los valores de los textbox los llamo de la siguiente manera...

string dni = Request.Form.GetValues("dni")[0].ToString();
string correo = Request.Form.GetValues("correo")[0].ToString();
string aeronave = Request.Form.GetValues("aeronave")[0].ToString();

Y luego en la tabla en su respectivo <td> pongo lo siguiente:
Sesion.Append("<td>" + Request.Form.GetValues("dni")[0] + "</td>");
Sesion.Append("<td>" + Request.Form.GetValues("correo")[0] + "</td>");
Sesion.Append("<td>" + Request.Form.GetValues("aeronave")[0] + "</td>");

De esta forma me pone correctamente los valores en las celdas, pero no se hacerlo para los Radiobuttons.

P.D: Todo el código copiado corresponde al Default3.aspx.cs que es la página que recoge los valores del formulario de la Default2.aspx y me crea la tabla con los valores introducidos.


Alguien sabría como hacerlo?

Muchas gracias a los que me puedan echar una manita.

Por cierto el Visual Studio que uso es el 2005.

Un saludo.
  #2 (permalink)  
Antiguo 27/07/2009, 10:09
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Respuesta: Como recoger el checked o no de un RadioButton

Hola Elengel.
No se si este código corresponde a lo que quieres hacer realmente en .Net, o si estás un poco influenciado por el ASP tradicional.
Algo importante en el trabajo con .Net es que en realidad se trabaja como formularios, y es la propia página la que recoge los valores del formulario.
Siendo así no tendrías por qué estar haciendo uso del Request.Form y todas estas cosas...
De momento te dejo un ejemplo de cómo recoger los valores de unos RadioButton, por si te resuelve alguna duda:
Código VB.NET:
Ver original
  1. 'Para saber si está checado y en tal caso obtener el texto de la opción seleccionada
  2. Dim OpcionSeleccionada As String = ""
  3. If RadioButton1.Checked Then
  4.   OpcionSeleccionada = RadioButton1.Text
  5. End If
De todas formas si necesitas más ayuda, por aquí andamos.
Un saludo y suerte!
__________________
..:: moNTeZIon ::..
  #3 (permalink)  
Antiguo 27/07/2009, 11:07
 
Fecha de Ingreso: mayo-2009
Mensajes: 42
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Como recoger el checked o no de un RadioButton

Buenas moNTeZIon,

Resulta que yo mis formularios les tengo en una variable de tipo stringbuilder, en la cual esta incrustado todo el formulario html (se que es un poco chapuza pero me han mandado hacerlo así de momento).

Lo que ocurre ahora es que si yo origino el formulario que tengo en la variable stringbuilder en mi default2.aspx.cs y quiero luego recoger los valores de los radiobuttons en mi default3.aspx.cs como se haría?

Arriba he puesto como recojo los valores de los input normales (textbox), pero no se como recoger el que un radiobutton este checked o no lo esté.

Se me entiende mas o menos?, seguramente el metodo que me explicas tu es lo mas adecuado pero soy totalmente nuevo en esto de .Net C# y de momento me han dixo que lo haga de esta manera. Ya en un futuro a lo mejor se cambia y se va mejorando el código pero de momento debo hacerlo de la forma que te he explicado.

Sabrías mas o menos como se haría?

Un saludo.
  #4 (permalink)  
Antiguo 28/07/2009, 08:13
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Respuesta: Como recoger el checked o no de un RadioButton

Hola Elengel.
La verdad es que estoy flipando un poco con el esquema, me cuesta entender tu objetivo, pero vamos a ver si podemos ayudar en algo.
Sospecho que ese formulario que dices que metes en un StringBuilder, se trata de un formulario HTML y no de ASP.NET. O sea, que incluso los controles que contiene el formulario son controles HTML y no controles de ASP.NET.
¿Correcto? Si es así, hasta cierto punto tendría lógica que hagas lo que haces, pero para nada estás usando la tecnología de .Net, la verdad.
Pero en ese caso, imagino que tu problema radica en cómo recoger el valor de un radiobutton de HTML desde la página que recibe el POST.
En ese caso, en este enlace ayudan a alguien con esa misma duda:
http://www.todoexpertos.com/categori...2/radio-button
Espero que te sirva.
Suerte!
__________________
..:: moNTeZIon ::..
  #5 (permalink)  
Antiguo 03/08/2009, 01:19
 
Fecha de Ingreso: mayo-2009
Mensajes: 42
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Como recoger el checked o no de un RadioButton

Buenas moNTeZlon,

Lo primero, perdon por no haberme explicado con claridad, ciertamente es como tu dices, mi formulario no es de ASP.Net sino de HTML solo que yo introduzco todo el código html en la variable StringBuilder dentro de mi aplicación .net en C#.

Como bien has dicho tambien, los controles están en HTML y gracias a tu enlace he podido resolverlo, te lo agradezco.

Ahora tengo otro problemilla a ver si puedes ayudarme tambien...

Cuando estoy ejecutando mi aplicación Web y relleno uno de los formularios que he creado y le doy a enviar, arriba en el navegador me sale la URL pero ademas sale todo el código html del formulario que envio.

Es decir, cuando yo meto datos en mi formulario y le doy al botón enviar para que me redireccione al siguiente apartado, en la dirección me aparece esto:

http://localhost/Default.aspx?Contenido=<label%20for=""><h5>Los%20d atos%20han%20sido%20enviados%20correctamente:</h5></label><div%20id="fondoFormulario"%20class="fondoFo rmulario"><table%20class="resultados"><tbody><tr%2 0class="filaImpar"><th>Funci%c3%b3n</th><th>DNI</th><th>Correo%20Electr%c3%b3nico</th><th>Tipo%20de%20Aeronave</th><th>Matr%c3%adcula</th></tr><tr%20class="filaPar"><td>Titular</td><td>etcetcetc</td><td>[email protected]</td><td>F16</td><td>QS0I</td></tr></tbody></table></div>

Según he preguntado, me dicen que en mis formularios en vez de poner el method="post", debo poner method="get", pero a la hora de llamar los valores de ese formulario en mi siguiente Default3.aspx para que los recoja me da error en la llamada.

Sabes si debo poner method="get" para que se resuelva este problemilla? de ser así, como llamaría a los valores de los campos en el siguiente Default3.aspx para que me los pinte?

Espero haberme explicado bien.

Un saludo y muchas gracias.
  #6 (permalink)  
Antiguo 03/08/2009, 02:17
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Respuesta: Como recoger el checked o no de un RadioButton

Hola de nuevo.
La diferencia entre enviar los datos por GET o por POST, es que por GET se envían escritos en la URL, de forma que cualquiera puede ver los valores enviados de una página a otra.
Para recoger los valores en la página destino, usarías:

Request.QueryString("Variable")

En cambio, cuando envías por POST, los valores viajan ocultos, y no pueden ser vistos a simple vista por nadie, y para recuperar los valores en la página destino, usarías:

Request.Form("Variable")

Es un resumen rápido.
Pero te vuelvo a decir que, aunque está bien tener estos conocimientos, ahora con .Net se trabaja de otra forma.

Un saludo y suerte.
__________________
..:: moNTeZIon ::..
  #7 (permalink)  
Antiguo 03/08/2009, 03:16
 
Fecha de Ingreso: mayo-2009
Mensajes: 42
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Como recoger el checked o no de un RadioButton

Hola,

Si, se que debería trabajar de la otra forma pero en mi trabajo me han dicho que de momento lo haga así y que mas tarde ya lo mejorariamos.

El tema "post" y "get" ya lo he probado, al final no tiene nada que ver con eso al parecer.

Creo que mi problema esta en el Response.Redirect por que no entiendo pq en la URL me sale todo el código html que voy metiendo en la variable de stringbuilder...

Mi response está de la siguiente manera:

Response.Redirect("Default.aspx?Contenido=" + Sesion.ToString());

De esta forma la URL sale como te he puesto arriba, con toda esa parrafada.

Sabrías como resolver este problemilla?

Un saludo!!.


EDITO: Por lo que he podido investigar el problemilla es que la variable la recibo como QueryString de esta forma:
string InicioSesion = Request.QueryString["Contenido"];
Recordemos que mi formulario esta en un Default2.aspx donde redireccion de esta forma:
Response.Redirect("Default.aspx?Contenido=" + Sesion.ToString());
Y en el Default.aspx es donde yo hago el QueryString.
Por lo que me pone todo el código html a pelo ahí dentro... la solución sería sin usar el QueryString entiendo pero no se como se tendría que hacer...

Última edición por Elengel; 03/08/2009 a las 03:37
  #8 (permalink)  
Antiguo 04/08/2009, 05:52
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Respuesta: Como recoger el checked o no de un RadioButton

Buenas!
Haz algunas pruebas para saber qué pasa.
Prueba:
Response.Redirect("Default.aspx");

Luego prueba:
Response.Redirect("Default.aspx?Contenido=hola");

Y luego pruebas:
Response.Redirect("Default.aspx?Contenido=" + Sesion.ToString());

Así sacas tus conclusiones...

Y para salir de dudas, intenta primero enviar el POST a una página que no tenga código, así podrás ver si es culpa de la página que recibe el POST, o es culpa de la página que lo envía...
Y... una pregunta:
Qué es "Sesion.ToString()"? O mejor dicho, qué es Sesion?
__________________
..:: moNTeZIon ::..
  #9 (permalink)  
Antiguo 06/08/2009, 01:56
 
Fecha de Ingreso: mayo-2009
Mensajes: 42
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Como recoger el checked o no de un RadioButton

Hola de nuevo MoNTeZlon,

Mi formulario esta dentro de una variable de tipo StringBuilter en el que está implicito todo el formulario en código html.
Ejemplo:

Sesion.Append("<form name="formulario_acceder" method="post" action="Default3.aspx" id="formulario_acceder">");

Sesion.Append("<fieldset>");

Sesion.Append("<legend>Titular-Representante</legend>");
Sesion.Append("<p>");
Sesion.Append("<strong> Seleccione su función dentro de esta solicitud:</strong>");
Sesion.Append("</p>");

etc
etc

Sesion.Append("</fieldset>");

Sesion.Append("</form>");

La cosa es que esto esta en un Default2.aspx y lo devuelvo al Default.aspx de la siguiente manera:

Response.Redirect("Default.aspx?Contenido=" + Sesion.ToString());

Luego, en el Default.aspx lo recogo así:

string InicioSesion = Request.QueryString["Contenido"];

Y me lo pinta el formulario originago perfectamente en la página y todo. El problema es que en la URL del explorador me pone todo el código del formulario que he usado de esta forma:

http://localhost/Proyecto.Web/Default.aspx?Contenido=<label%20for=""><h5>Los%20d atos%20han%20sido%20enviados%20correctamente:</h5></label><div%20id="fondoFormulario"%20class="fondoFo rmulario"><table%20class="resultados"><tbody><tr%2 0class="filaImpar"><th>Funci%c3%b3n</th><th>DNI</th><th>Correo%20Electr%c3%b3nico</th><th>Tipo%20de%20Aeronave</th><th>Matr%c3%adcula</th></tr><tr%20class="filaPar"><td>Representante</td><td>12312323f</td><td>[email protected]</td><td>f23</td><td>wer34</td></tr></tbody></table></div>

Es decir que me pega tal cual el formulario que yo he creado en el Stringbuilder y me gustaría resolver este problema poque en la URL no debería de mostrarse todo este código...

He probado el System.Web.HttpUtility.HtmlDecode(), Encode, y mas cosas pero no me soluciona nada.

Alguna idea para solucionar el problemilla de la URL?

Un saludo y Gracias

P.D: Se que hacer el formulario de esta manera es una chapuza con mayúsculas pero es como me han mandado de momento que lo haga... en un fúturo se cambiará a la forma que se tiene que hacer pero de momento no puedo hacer otra cosa.
  #10 (permalink)  
Antiguo 07/08/2009, 06:15
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Respuesta: Como recoger el checked o no de un RadioButton

De acuerdo.
Ahora entendí. Llamaste Sesion a la variable StringBuilder y daba pie a confusiones.
Entonces tu único problema es que aparece el contenido de la variable Sesion en la URL. Eso es correcto, puesto que realmente es lo que estás haciendo por código.
Por lo tanto, debes cambiar tu código para hacer algo distinto. Si realmente quieres enviar todo ese texto a otra página y no quieres que se vea en la URL, ya te expliqué que entonces debes mandarlo por POST, en vez de por GET.
Pero entonces ya no es tan sencillo como hacer un Response.Redirect.
Deberías tener todo ese texto en un campo de tipo HIDDEN en un formulario de tu página inicial, establecer el action de ese formulario a la página de destino que quieres que lo reciba, y hacer un submit del formulario. Así envias el formulario por POST.
Luego solo te queda en tu página de destino, recoger el valor del campo HIDDEN de la siguiente forma:
Request.Form["NombreDelCampoHidden"]
Ánimo!
__________________
..:: moNTeZIon ::..
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:59.