Vb 2005 - Problema con DataGridView

giovedì 09 ottobre 2008 - 19.15

DomA Profilo | Expert

Ragazzi ciao a tutti. Io ho inserito nell'evento CellEnter di un DataGridView il codice per visualizzare i dati in alcune textbox poste sul form. Tuttavia quando una cella è vuota (non contiene alcun valore) mi dà il seguente errore: Cast non valido dal tipo 'DBNull' al tipo 'String'.

il codice che io utilizzo è il seguente:

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

Come posso rimediare?
grazie a tutti per l'aiuto
Domenico

Teech Profilo | Expert

Semplicemente devi controllare che il valore di CurrentRow non sia NULL con una IF del tipo (non ho VS in questo PC quindi il codice non riesco a testarlo, ma il concetto è questo):

If not IsNull(DataGridView.CurrentRow) Then
TuoCodice
End If

Ho notato che alla fine del codice da te postato c'è un End If solo soletto: sicuramente è un refuso di un Copy/Paste sul forum...
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

DomA Profilo | Expert

>If not IsNull(DataGridView.CurrentRow) Then
>TuoCodice
>End If

perdona la mia ignoranza ma mi dà un errore: IsNull non dichiarato (sottolineato blu).
potresti illuminarmi?
grazie
Domenico

Teech Profilo | Expert

Con più calma ti posso dire che non è IsNull ma IsNothing...
Altra cosa ti conviene controllare i valori e non l'indice della riga (che esisterà sempre)
Prova così:

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

Personalmente utilizzerei un BingingSource che si presta molto bene per fare quello che vuoi tu, ma diventa laborioso da spiegare... Eventualmente più tardi metto 2 righe... Mi dici come popoli il DataGridView?

Ciao!!!
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

DomA Profilo | Expert

La grid la popolo con un dataset creato da codice:

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

Comunque il tuo metoto funziona alla garnde! Spemplicemente perfetto.
Aspetto suggerimenti per migliorare il codice.
Grazie
Domenico

Teech Profilo | Expert

Ho buttato giù velocemente delle variazioni al tuo codice per provare il BindingSource.
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Prova a vedere se questo fa al caso tuo (Attenzione!!! ci vuole il Framework 2.0).
Ciao!!!
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5