Recuperare valori dalla riga selezionata di un Gridview

martedì 08 giugno 2010 - 00.31

Eracle Profilo | Newbie

Salve ,ho una gridview seguente:

csc:MyGridview ID="gwPostazione1Estetica" runat="server" SkinID="gwStandard" AutoGenerateColumns="false" PageSize="50" AllowSorting="true" AllowPaging="true" DataKeyNames="ID_PRENOTAZIONE">
<Columns>
<asp:BoundField DataField="ID_PRENOTAZIONE" readonly="True" Visible="false" ></asp:BoundField>
<asp:TemplateField >
<ItemTemplate>
<asp:HiddenField ID="hfPostazioneEstetica" runat="server" Value='<%#eval("POSTAZIONE") %>' />

</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField >
<ItemTemplate>
<asp:HiddenField ID="hfOraEstetica" runat="server" Value='<%#eval("ORA") %>' />

</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<ItemTemplate>
<asp:HiddenField ID="hfMinutiEstetica" runat="server" Value='<%#eval("MINUTI") %>' />

</ItemTemplate>
</asp:TemplateField>

<asp:BoundField DataField="NOME" HeaderText="Cliente" Visible="False"/>
<asp:BoundField DataField="COGNOME" HeaderText="Cliente" Visible="False"/>
<asp:BoundField DataField="Telefono" HeaderText="Telefono" Visible="False" />
<asp:BoundField DataField="TRATTAMENTO" HeaderText="TRATTAMENTO" SortExpression="TRATTAMENTO" />
<asp:TemplateField HeaderText="Elim" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" HeaderStyle-Width="25px">
<ItemTemplate>
<asp:ImageButton ID="ibPrenotazioneEsteticaSlash" ImageUrl="~/boffice/images/icona-elimina.png" AlternateText="Elimina" runat="server" CommandArgument='<%#eval("ID_PRENOTAZIONE").ToString %>' commandname='<%#eval("PRENOTATO").ToString %>' onClick="prenotazione_slash_estetica1"/>

</ItemTemplate>
</asp:TemplateField>




</Columns>

</csc:MyGridview>



da codice vorrei recuperare il valore degli HiddenFields contenuti nelle celle tramite l'evento click dell' image button "ibPrenotazioneEsteticaSlash"

Public Sub prenotazione_slash_estetica1(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs)
Try
Dim ora As Integer = CInt(CType(Me.gwPostazione1Estetica.Rows.Item(Me.gwPostazione1Estetica.SelectedIndex).Cells(1).FindControl("hfOraEstetica"), HiddenField).Value)
Dim minuti As Integer = CInt(CType(Me.gwPostazione1Estetica.Rows(Me.gwPostazione1Estetica.SelectedIndex).Cells(2).FindControl("hfMinutiEstetica"), HiddenField).Value)
If prenotato = "TRUE" Then
inserisciSlash(id_prenotazione, postazione, ora, minuti)
End If
Catch ex As Exception
Throw
End Try
End Sub


Mi ciene restituito il seguente errore : Index non compreso nell'intervallo. Richiesto valore non negativo e minore della dimensione dell'insieme.
Nome parametro: index


Come posso risolvere.

Grazie

paoval72 Profilo | Senior Member

Ciao. Il tuo evento click in realtà non seleziona la riga (quindi il selected index del gridview ti risulta sempre -1).
Devi recuperare i controlli in cui è contenuta la tua immagine. Io lavoro in C#, ma la logica è la stessa:
1) faccio il cast del sender (cioè l'immagine su cui ho cliccato)
2) recupero la riga in cui è contenuta l'immagine attraverso il "parent": al primo livello c'è la cella, al secondo c'è la riga del gridview
3) Ora ho la mia riga: posso recuperare l'indice, rpendere il controllo di un'altra sua cella, etc...


Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Attenzione al lato client: la funzione .ToString manca delle parentesi:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
E se non ti riconosce "eval", è solo perchè è attaccato al simbolo "#": basta dargli una spaziatura:
# eval.

Buona giornata,
PV

Eracle Profilo | Newbie

Il tuo aiuto è stato preziosissimo :)

Grazie.
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