Obtuve un control de plantilla (un repetidor) que incluye texto y otro marcado. Cada elemento tiene un botón de radio asociado, lo que permite al usuario seleccionar UNO de los elementos creados por el repetidor.ASP.NET RadioButton jugando con el nombre (nombre de grupo)
El repetidor escribe el botón de radio estableciendo su identificación y nombre generado con la convención de nomenclatura de ASP.NET predeterminada, haciendo que cada radiobot sea un 'grupo' completo. Esto significa que todos los botones de radio son independientes entre sí, lo que desafortunadamente significa que puedo seleccionar todos los botones de radio al mismo tiempo. El botón de radio tiene el atributo inteligente 'nombre de grupo' utilizado para establecer un nombre común, por lo que se agrupan y, por lo tanto, deben ser dependientes (por lo que solo puedo seleccionar uno a la vez). El problema es que esto no funciona, el repetidor se asegura de que la identificación y, por lo tanto, el nombre (que controla la agrupación) sean diferentes.
Como uso un repetidor (podría haber sido una lista o cualquier otro control de datos con plantillas) no puedo usar RadioButtonList. Entonces, ¿dónde me deja eso?
Sé que he tenido este problema antes y lo he resuelto. Sé que casi todos los programadores ASP.NET deben haberlo tenido también, así que ¿por qué no puedo buscar en Google y encontrar una solución sólida al problema? Encontré soluciones para hacer cumplir la agrupación por JavaScript (¡feo!) O incluso para manejar los botones de radio como controles que no son del servidor, forzándome a hacer un Request.Form[name]
para leer el estado. También intenté experimentar anulando el atributo de nombre en el evento PreRender
- desafortunadamente, la página propietaria y la página maestra nuevamente anulan este nombre para reflejar el id/nombre completo, así que termino con el mismo resultado incorrecto.
Si no tienes una solución mejor que la que publiqué, aún así puedes publicar tus pensamientos, al menos sabré que mi amigo 'Jack' tiene razón sobre lo complicado que es a veces ASP.NET;)
Ver: * [ERROR: Los botones de opción no son mutuamente excluyentes cuando se utiliza en un control de servidor Repeater] (http://support.microsoft.com/default.aspx?scid=kb; en-us; Q316495) *. Eso es simplemente una locura ... Es un error desde el framework 1.0, y tiene un gran impacto. Necesito heredar el botón de radio y anular un par de métodos para que funcione (para mi versión actual de ASP.NET). ¿Lo que da? –