Deselezionare una colonna radiobutton su una gridview

mercoledì 02 aprile 2014 - 14.03
Tag Elenco Tags  VB.NET  |  .NET 2.0  |  Windows XP  |  Visual Studio 2010  |  SQL Server 2008 R2

paolagumi Profilo | Junior Member

Buongiorno a tutti,
ho una gridview con una colonna ItemTemplate che contiene un RadioButton.
Voglio selezionare solo 1 elemento, e ci sono riuscita.
Però non riesco a deselezionare un elemento selezionato in precedenza, se non selezionandoneun altro, in modo che si presenti la griglia pulita (cioè l'utente non abbia effettuato nessuna scelta).
Posto il codice di seguito:
<asp:GridView ID="GvSquadreDisponibiliData" allowpaging="true" autogeneratecolumns="false"
onrowcommand="GvSquadreDisponibiliData_RowCommand" runat="server" DataKeyNames="Area,OraInizio"
style="margin-top: 0px" >
<HeaderStyle CssClass="DataGridHeader" />
<RowStyle CssClass="DataGridItem" />
<PagerStyle CssClass="DataGridPager" />
<Columns>
<asp:TemplateField ItemStyle-Width="10" >
<ItemTemplate>
<asp:RadioButton ID="rbtIscriviti" runat="server" Text="" AutoPostBack="True"
OnCheckedChanged="rbtIscriviti_CheckedChanged" Width="20" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Area" HeaderText="Area" ItemStyle-Width="70" ItemStyle-HorizontalAlign="Center" />
<asp:BoundField DataField="OraInizio" HeaderText="Ora Inizio" ItemStyle-Width="70" ItemStyle-HorizontalAlign="Center" />
<asp:BoundField DataField="OraFine" HeaderText="Ora Fine" ItemStyle-Width="70" ItemStyle-HorizontalAlign="Center" />
<asp:BoundField DataField="Iscritto" />
<asp:TemplateField HeaderText="Assegnato" ItemStyle-Width="70" >
<ItemTemplate>
<asp:Image runat="server" ImageUrl="../../../immagini/Vero.gif" visible="false" />
</ItemTemplate>
</asp:TemplateField>

</Columns>
</asp:GridView>

Questo è il code behind:
Protected Sub rbtIscriviti_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)

'deselect all radiobutton in gridview
deselezionaIscrizione_in_gv()

'attiva il rb su cui si è cliccato (checked)
Dim SenderRB As RadioButton = sender
SenderRB.Checked = True
End Sub

Sub deselezionaIscrizione_in_gv()
Dim gvr As GridViewRow
Dim i As Int32
'deselect all radiobutton in gridview
For Each gvr In GvSquadreDisponibiliData.Rows
Dim rb As RadioButton
rb = CType(GvSquadreDisponibiliData.Rows(i).FindControl("rbtIscriviti"), RadioButton)
If rb.Checked = True Then
Session.Item("Scelta") = i
End If
rb.Checked = False
i += 1
Next

End Sub

ciao a tutti,
Paola

alx_81 Profilo | Guru

>Buongiorno a tutti,
ciao

>ho una gridview con una colonna ItemTemplate che contiene un RadioButton.
>Voglio selezionare solo 1 elemento, e ci sono riuscita.
>Però non riesco a deselezionare un elemento selezionato in precedenza,
>se non selezionandoneun altro, in modo che si presenti la griglia
>pulita (cioè l'utente non abbia effettuato nessuna scelta).
questo perchè per natura il radio button può essere inizializzato per la prima scelta, ma poi non può essere annullato. Perchè la scelta tramite radio button DEVE essere obbligatoria e mutualmente esclusiva.
Forse il controllo che dovresti usare è una checked box list o qualcosa di simile. Non è una buona pratica deselezionare un radio button, tuttavia è possible, mettendo in js la proprietà checked come "undefined" (oppure usando jquery ed impostando la proprietà checked a false).
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5