VB.NET Bindig di dati

mercoledì 06 luglio 2011 - 16.43
Tag Elenco Tags  VB.NET

pedro8a Profilo | Junior Member

Ciao a tutti,
ho questo codice:

Dim drv As DataRowView = DirectCast(Bds.Current, DataRowView)
Dim id As Integer = DirectCast(drv.Item("id"), Integer)

nel pulsante apri scheda.

Il problema è che l'oggetto BindingSource non è "pieno" finchè l'utente non effettua una ricerca che popola un DataGridView

Sul pulsante che apre la scheda, si può cliccare e va in errore se la ricerca non è stata fatta.

Come faccio a capire che il dbs è "vuoto"?

Cteniza Profilo | Guru

Devi verificare prima che ci siano dati oppure mettere il tutto in un blocco di try / catch e gestire l'errore

pedro8a Profilo | Junior Member

Infatti volevo verificare se il dataset è pieno con una if
Ma se il dataset è vuoto il programma va in errore

DomA Profilo | Expert

>>Come faccio a capire che il dbs è "vuoto"?

Ctzenia ti ha dato la risposta:

>>mettere il tutto in un blocco di try / catch e gestire l'errore

Ciao
Domenico

pedro8a Profilo | Junior Member

Rieccomi,
provenendo da vb6, ho scritto questo codice, o si può fare di meglio?
Se il dataset non è caricato mi ritorna l'errore n. 91

Try
Dim drv As DataRowView = DirectCast(Bds.Current, DataRowView)
'Dim ID As Integer = DirectCast(drv.Item("id"), Integer)
Catch
If Err.Number = 91 _
Then
MsgBox("Nessuna Scheda Caricata")
Else
MsgBox(Err.Number & " " & Err.Description)
End If
End Try

DomA Profilo | Expert

Direi che così va proprio bene.
Ciao
Domenico

pedro8a Profilo | Junior Member

Bene, funziona a meraviglia.
Adesso ho un altro problema.
Con vb6 quando cliccavo su una riga del datagrid, gestivo l'evento e riempivo alcune textbox con dati aggiuntivi che non si vedeno nel grid.
Era una "porcata"..... quando si popolava il grid, il compilatore ripeteva 3-4 volte il codice all'interno di questo evento.
Con ovvi errori. Ero costretto a controllare se era la prima volta che si entrava nel form..... lasciamo perdere.Ora che ho scoperto... finalmente...... il binding in .NET (ma forse qualcosa si poteva fare anche in vb6), ho risolto questo problema.... Ma???

Adesso come faccio ad intercettare il fatto, l'evento, che l'utente ha selezionato un altra riga?
Naturalmente cercando di evitare il ripetersi del codice al suo interno (all'interno dell'evento...).
Infatti cercando di fare la stessa cosa che facevo in vb6, gestire l'evento nel gridview di .net, fa la stessa cosa, il compilatore "gira" 3-4 volte all'interno di questo evento....

Spero di essere stato chiaro.

Come diavolo faccio?

Grazie

DomA Profilo | Expert

Forse non ho ben capito...
Ma ci sono gli eventi CellEnter, CellContentClik, KeyDown e così via del Gridview. Basta inserire il codice che vuoi in questi eventi.
Domenico

pedro8a Profilo | Junior Member

Hai ragione, mi stavo incartando.
Ho messo il codice nell'evento DataGridView_MouseUp e funziona a meraviglia.

Non sò se aprire un altro post, intanto scrivo qui.
Alla fine con questo post ci scrivo la documentazione sul datagridview...

Ho questo codice per inserire una checkbox di selezione schede:

Dim Check As New DataGridViewCheckBoxColumn
With Check
.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells
.FlatStyle = FlatStyle.Standard
.CellTemplate.Style.BackColor = Color.Honeydew
.DisplayIndex = 0
End With

DataGridView.Columns.Add(Check)

Vorrei fare 3 cose:

1- quando l'utente "spunta" la checkbox, l'intera riga del grid si dovrebbe colorare e rimanere colorata;
2- devo fare una funziona del tipo: invia una mail/sms a tutti i clienti selezionati. Quindi come faccio un ciclo per vedere tutti i clienti selezionati?
3- si potrebbe mettere una checbox come intestazione di colonna. Se l'utente spunta questa chekbox seleziona, quindi il programma spunta, tutte le schede?

Ciao

DomA Profilo | Expert

Ti conviene inserire un altro post e chiudere il presente.
Intanto ti suggerisco questo:
http://www.pierotofy.it/pages/search/datagridview+++checkbox/?PHPSESSID=cca7ca0628554d7b9728ed20ecbed869
Ciao
Domenico
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5