Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/02/2006, 03:10
Avatar de Bravenap
Bravenap
 
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años, 1 mes
Puntos: 4
Bueno, más o menos lo he resuelto. Os pongo todo el código vb y la función javascript que uso. Con esto consigo que, todos los readiobuttonlist funcionen como uno sólo, es decir que sólo se pueda seleccionar una opción entre todos ellos:
Código:
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        If Not Page.IsPostBack Then
            Dim strSel As String = "SELECT * FROM tipos WHERE ID <> 1 ORDER BY ID"
            Dim dt As DataTable = OrigenDatos.DevuelveDT(strSel)
            Me.ddlTipo.DataSource = dt
            Me.ddlTipo.DataTextField = "Nombre"
            Me.ddlTipo.DataValueField = "ID"
            Me.ddlTipo.DataBind()
            CargaGruposSuperiores()
        End If

    End Sub

    Private Sub ddlTipo_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ddlTipo.SelectedIndexChanged

        CargaGruposSuperiores()

    End Sub

    Private Sub CargaGruposSuperiores()

        Dim ID As String = Me.ddlTipo.SelectedValue
        Dim ds As DataSet = OrigenDatos.EjecutaPA("PA_GruposSuperiores", ID)
        For Each dt As DataTable In ds.Tables
            Dim lbl As New Label
            lbl.Text = QuitaEspacios(dt.Rows(0).Item("Tipo"))
            lbl.CssClass = "titulillo"
            Me.pnlGruposSuperiores.Controls.Add(lbl)
            Dim barra As New HtmlControls.HtmlGenericControl
            barra.InnerHtml = "<HR class='seccion'>"
            Me.pnlGruposSuperiores.Controls.Add(barra)
            Dim rbl As New RadioButtonList
            rbl.DataSource = dt
            rbl.DataTextField = "Nombre"
            rbl.DataValueField = "ID"
            rbl.DataBind()
            rbl.RepeatDirection = RepeatDirection.Horizontal
            rbl.RepeatColumns = 4
            rbl.Attributes.Add("onClick", "GruposSuperiores(this.id);")
            Me.pnlGruposSuperiores.Controls.Add(rbl)
        Next
        Me.pnlGruposSuperiores.EnableViewState = True
        Me.ddlTipo.SelectedValue = ID

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Response.Write(Me.pnlGruposSuperiores.HasControls)

    End Sub
Código HTML:
 <script language="javascript">
		function GruposSuperiores(id)
		{
			var f = document.forms[0].elements; 
			for (var i = 0 ; i < f.length ; ++i)
			{ 
				if (f[i].type == "radio")
				{ 
					var radiogroup = f[i].name; 
					if(radiogroup != id)
					{	
						var obj = document.getElementsByName(radiogroup);
						for(var j = 0 ; j < obj.length; ++j)
						{
							obj[j].checked = false;
						}
					}
				}
			} 
		}
		</script> 
El problema está en que no me mantiene los controles añadidos al panel al hacer un postback ni tampoco puedo recuperar los valores marcados. De hecho, la linea en rojo devuelve siempre false.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!