Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/05/2005, 08:45
Avatar de RootK
RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 3 meses
Puntos: 50
Hola y bienvenido alukard82bcn

En este caso vas a tener que jugar un poco con javascript.

Ejemplo:

Supongamos que tienes un datagrid llamado DataGrid1 con tu checkbox.. quedando de ésta forma:

Cita:
<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:CheckBox Runat="server" ID="CheckBox1" Text="Prueba" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
Si pruebas en tu browser te darás cuenta que el datagrid es una simple tabla que los id´s cambian dependiendo del contenido..

En este caso cuando se envia al cliente la info se convierte el grid en algo como ésto:

Cita:
<table cellspacing="0" rules="all" border="1" id="DataGrid1" style="border-collapse:collapse;">
<tr>
<td>&nbsp;</td>
</tr><tr>
<td>
<input id="DataGrid1__ctl1_CheckBox1" type="checkbox" name="DataGrid1:_ctl1:CheckBox1" onclick="unCheck(this)" /><label for="DataGrid1__ctl1_CheckBox1">Prueba</label>
</td>

etc...
entonces ésta es la info que vamos a necesitar para que solo permita seleccionar un checkbox.

Y nuestro javascript quedaría así:

Cita:
function unCheck(obj)
{
var checkBoxID = "CheckBox1";
var tbl = document.getElementById('DataGrid1');
//buscamos los elementos que están dentro de la tabla por tagName
var chk = tbl.getElementsByTagName("input");

var sID;
//recorro mis elementos buscando que tengan el ID CheckBox1 (por si llego a tener otros controls de tipo <input> y si lo encuentro le quito la seleccion
for (i=0;i < chk.length;i++){
sID = chk[i].id;
if (sID.indexOf(checkBoxID) > 0)
chk[i].checked = false;
}

//finalmente dejo en check el elemento seleccionado
obj.checked = true;
}
Por último hay que asociar el code javascript a el control checkbox.. eso lo podemos hacer con el evento ItemDataBound y quedaría de ésta forma:

Cita:
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound

If e.Item.ItemType = ListItemType.AlternatingItem Or _
e.Item.ItemType = ListItemType.Item Then
Dim chkBox As CheckBox = CType(e.Item.FindControl("CheckBox1"), CheckBox)
'Le asocio el evento onlick y le paso como parametro el objeto actual
chkBox.Attributes.Add("onclick", "unCheck(this)")
End If

End Sub
Y listo, ya cada vez que seleccione un elemento no podré seleccionar otro mas..

Traté de ser lo más claro posible.

Espero que te sirva, cualquier cosa por aqui andaremos.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net