Otenere il valore di una cella modificata in una Datagridview

mercoledì 03 settembre 2014 - 18.30
Tag Elenco Tags  C#  |  VB.NET  |  .NET 2.0  |  .NET 3.0  |  .NET 3.5  |  .NET 4.0

dommyone Profilo | Newbie

Salve ragazzi, vorrei ottenere il valore di una cella modificata nell'evento celldoubleclick. Se in una cella scrivo un valore (esempio: '2') e senza uscire dalla cella faccio il doppio click non ottengo il valore inserito (2) ma ottengo il valore precedente della cella.
Vi posto il codice che utilizzo:

Private Sub TabPrenota_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles TabPrenota.CellDoubleClick
a = TabPrenota.Item(e.ColumnIndex, e.RowIndex).Value
end sub

Grazie.

0v3rCl0ck Profilo | Guru

prova a lanciare prima della lettura questo:

TabPrenota.CommitEdit(DataGridViewDataErrorContexts.Commit)

forse la cella non ha ancora committato il dato inserito, e lo fa solo quando esci dalla cella.


Ciao!

Michael Denny | Visual C# MVP
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
http://mvp.microsoft.com/mvp/Michael%20Denny-5000735
Twitter: @dennymic

dommyone Profilo | Newbie

Si l'inghippo sta appunto nel fatto che la cella non è validata. ho provato l'istruzione che mi hai suggerito ma purtroppo non ho ottenuto nessun risultato. mi valorizza la variabile comunque con il valore precedente della cella.

Private Sub TabPrenota_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles TabPrenota.CellDoubleClick

TabPrenota.CommitEdit(DataGridViewDataErrorContexts.Commit)
a= TabPrenota.Item(e.ColumnIndex, e.RowIndex).Value
end sub

0v3rCl0ck Profilo | Guru

prova con:

TabPrenota.EndEdit()


Michael Denny | Visual C# MVP
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
http://mvp.microsoft.com/mvp/Michael%20Denny-5000735
Twitter: @dennymic

dommyone Profilo | Newbie

Soluzione al problema Datagridview.EndEdit() come mi hai suggerito. Funziona grazie 1000

0v3rCl0ck Profilo | Guru

a me sinceramente funziona:

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

in c# perchè in vb.net sono una schiappa ormai

ti ho anche allegato un app dove riesco a fare doppio click in editing, e leggo il valore inserito subito dopo... se non metto EndEdit, infatti mi da il valore precedente.



Michael Denny | Visual C# MVP
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
http://mvp.microsoft.com/mvp/Michael%20Denny-5000735
Twitter: @dennymic

dommyone Profilo | Newbie

Scusami è stata una mia svista non funzionava perchè utilizzavo l'istruzione TabPrenota.RefreshEdit(), in questo modo non mi aggiornava il valore. Utilizzando solo TabPrenota.EndEdit funziona benissimo. Grazie

0v3rCl0ck Profilo | Guru

Bene, alla prossima, ciao


Michael Denny | Visual C# MVP
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
http://mvp.microsoft.com/mvp/Michael%20Denny-5000735
Twitter: @dennymic
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