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> </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