Selezione elemento di una griglia

sabato 13 maggio 2006 - 15.00

ricky Profilo | Junior Member

Ciao a tutti, quale evento devo utilizzare per recuperare l'ID di una specifica riga di una griglia: ho provato con click ma l'evento include (object sender e EventArgs e) e non capisco come recuperare l'ID (campo/colonna) che mi interessa.

Praticamente dovrei:

far selezionare una riga all'utente
intercettare la riga scelta -> non capisco come fare
alimentare una serie di campi -> fin qui nessun problema
a questo punto avrei bisogno di un vostro suggerimento:

dato che gli stessi campi li uso sia per creare una nuova riga sia per modificare una di quelle esistenti (appunto già presenti nella griglia) cosa mi consigliate di usare per gestire le due differenti operazioni di creazione/update??

Grazie per l'aiuto!!!

alextyx Profilo | Expert

Non so di che griglia si tratti, ma dovresti poter recuperare lo item selezionato dal tuo click interrogando le proprietà dell'oggetto sender, che rappresenta il controllo su cui è avvenuto il click. In pratica se la tua griglia si chiama Griglia1, sender.name sarà "Griglia1". Potresti dover operare una conversione per attivare lo intellisense sulle proprietà che ti interessano. Es.:

ctype(sender,datagridviewer).name

ricky Profilo | Junior Member

Ufff... ho provato ma non capisco cosa devo fare e dove sbaglio

allora, ho una sorta di datagrid, una griglia di un componente esterno
DevExpress.XtraGrid.GridControl che cmq si comporta come una normale griglia

quale evento devo recuperare??? io ho preso l'evento click

ma come faccio a castare il sender??

Grazie per l'aiuto!

alextyx Profilo | Expert

Non conosco quel controllo. Posso dirti come ho fatto qualcosa di simile con un listview. Lì parlo di item, tu probabilmente ti riferirai a delle row, ma il concetto non dovrebbe cambiare troppo. Tieni presente che io mi riferisco all'item selezionato perchè, avendo impostato a false la possibilità di multiselezione del mio listview, so per certo che posso avere non più di un item selezionato alla volta. Io mi sono posizionato nell'evento doubleclick, ma tu potresti scegliere un evento che riguarda il cambio di riga selezionata. Purtroppo non so che interfaccia esponga la tua griglia e quindi non posso operare questa scelta al posto tuo. Il codice non è ottimizzato, perchè non ho completato quel lavoro. La variabile booleana OK potrebbe essere tolta, ma quello che interessa è che posso tranquillamente risalire allo item selezionato semplicemente chiedendolo al listview e passando lo item ad una apposita procedura ne estraggo i valori e li posiziono in appositi controlli.

Private Sub LsvReg_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles LsvReg.DoubleClick

Dim OK As Boolean = True

If Me.LsvReg.SelectedItems.Count > 0 Then

If Not Me.DaItemAiControlli(Me.LsvReg.SelectedItems(0)) Then
'Se c'è stato qualche errore, lo si annota
OK = False
End If

Else
OK = False 'Annoto la mancanza di selezione valida (la considero come un errore)
End If

If OK Then 'Se OK, cioè se le operazioni sono andata a buon fine, si passa allo stato1
MioStato = stati.VisualizzazioneDiRecordSelezionato
Me.ItemSelezionato = Me.LsvReg.SelectedItems(0) 'Si salva lo item selezionato
Me.VisualizzaScadenze(Me.LblIDReg.Text, False)
Me.RiempiLsvPagEffettuati()
'Me.ControlliPerLoStato()
End If

End Sub

ricky Profilo | Junior Member

Grazie mille per il tuo aiuto ma non capisco come applicare il tuo esempio alla mia situazione

Come indicato nel mio precedente post ho objet sender, MouseEventArrgs e come parametri del mio evento... non ho nemmeno l'handler che hai indicato e non capisco come adattarlo alla mia situazione

alextyx Profilo | Expert

Dunque, se l'evento in cui lavori è l'evento click della tua griglia, il sender è la tua griglia, quindi dovrebbe bastare andare a chiedere quale è la riga attualmente selezionata nella tua griglia. In effetti il sender è utile per capire quale controllo ha dato origine ad un evento, ma solo nell'ipotesi che la routine di evento sia 'scatenabile' da più controlli, il che non mi sembra sia il tuo caso. O sbaglio?
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5