Problema con DataGridView

lunedì 07 aprile 2008 - 18.31

jtpsala Profilo | Senior Member

Saluto tutti gli utenti di questo Forum.
Premetto che nel mio progetto - senaza fini di lucro - ho già inserito una connessione automatica ad un database access utilizzando l'autocomposizione fornita da vb 2008.
Tutto funziona aregola d'arte, o quasi.
Si verifica il seguente problema: dopo aver eseguito un filtro al mio DataGridView, riuscito grazie all'aiuto dell'utente TOPOAMORE, sembra che si disallinea tutto. Cioè, i dati filtrati che vado selezionare, non li fa più comarire nei textbox di modifica che ho creato sopra il DGV.
Volevo chiedere se magari bisognava utilizzare qualche funzione particolare, in modo tale che dopo un filtro al DataGridView, tutto ciò che seleziono in esso appaia regolarmente nelle sovrastanti textbox.

Ringrazio in anticipo.

TOPOAMORE Profilo | Expert

mi posti nuovamente qual' e' il codice di aggiornamento

ciauuuuuu

jtpsala Profilo | Senior Member

Diciamo che il codice l'ha generato vb in automatico ed è questo:
Try Me.Validate() Me.ScaricoBindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.MagazzinoGommeDataSet) Catch ex As Exception MsgBox(ex.Message) End Try

TOPOAMORE Profilo | Expert

in pratica non ti aggiorna nulla.Giusto?

jtpsala Profilo | Senior Member

Aspetta un secondo, se io non effettuo nessun filtro sul DataGridView, quel codice che ho postato funziona egregiamente.
Quando vado ad effettuare il filtro sul DataGridView, quest'ultimo si scollega dal DataSet.

TOPOAMORE Profilo | Expert

in pratica se tu modifichi idati dal datagrid tutto funziona quando cerchi di modoficarlo dalle textbox non funziona piu. giusto?

jtpsala Profilo | Senior Member

Si, proprio così. Li sto provando tutte. Addirittura avevo pensato di eseguire un filtro direttamente sul database con sql e dopo aprire la connessione quella generata dall'autocmposizione del vb, ma non so proprio come fare e generare questo tipo di codice.

TOPOAMORE Profilo | Expert

il problema e che non passi i nuovi valori al dataset, quindi quando vai ad aggiornare lui aggiorna i valori originali quindi niente.

a questo punto dei passare i valori al dataset

ogni volta che passi un valta che vai a modificare un valore da filtro devi prenderti l'id della riga in modo che potrai passarla come parametro per identificare dove posizionare i nuovi valori.

Tu effettui questi passaggi:
1 - Selezioni la riga da modificarenel datagrid
2 - i dati vanno a finire nelle textbox
3 - modifica delle textbox
4 - aggiornamento

fai questo?

alreimenti scrivimi quello che fai

jtpsala Profilo | Senior Member

All'apertura della form, tutto quello che seleziono nel DataGrigView, lo vedo in tempo reale nelle textBox ed ogno mofifica che vado ad eseguire lui la aggiorna e la salva. Questo non succede però dopo che eseguo un filtro sulla GataGridView solamente con questo codice:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

TOPOAMORE Profilo | Expert

forse ho capito.
Lui non aggiorna perche l'updatecommand viene fatto sul dataset che quando tu applichi il filtro non e lo stesso che e presente sul datagrid, in parole povere quando vai a fare il filtro viene modificato il datasource e il dataset da modificare rimane intatto per questo

jtpsala Profilo | Senior Member

Inizialmente avevo studiato di lavorare solo con il DataGridView nella form e dopo avergli effettuato un filtro, facevo doppio click sulla riga che mi interessava, la editavo e la modificavo a piacere, con il seguente codice:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Poi quando mi sono accorto che l'aggiornamento veniva eseguito solamente sulla DataGridView e non sul database ho fatto abortito quella soluzione ed ho, dopo aver rifatto tutto da capo, impostato la mia nuova connessione ad database con l'autocomposizione automatica, dalla parte destra del progetto sono andato su "Orinine Dati" ed ho trascinato la tabella di mio interesse sul form, prima in formato dettagli che ha inserito lui i textbox e poi in formato DataGridView.

Lanello Profilo | Senior Member

Ciao,

io non uso di solito DataGridView connessi ai dataset, proprio per i problemi che ho avuto (utilizzo soprattutto MySQL e non è del tutto compatibile) ma per le poche esperienze che ho avuto, ti dico soltanto che ti consiglio di provare a filtrare NON il datagrid ma il dataset!

filtri sul dataset ed aggiorni il datagrid, dovresti non avere più problemi!!!

facci sapere se ti ho indirizzato bene!

ciao!
La ricompensa per una cosa ben fatta, è averla fatta.

jtpsala Profilo | Senior Member

Grazie per aver risposto.
Ascolta, io utilizzo il seguente codice per filtrare i dati nel DataGridView:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Mi protresti fare un esempio utilizzando lo stesso codice per filtrare i dati direttamente del DataSet come hai indicato tu?
Ringrazio in anticipo.

Lanello Profilo | Senior Member

di nulla,

come ti ho detto non uso quasi mai i dataset... e quindi non potrò essere molto preciso

ma nel codice che hai postato secondo me ti contraddici...

prima associ il datasource della griglia al dataset originale

ScaricoDataGridView.DataSource = Me.MagazzinoGommeDataSet.Scarico

e poi crei una vista sul dataset, imposti il filtro e nuovamente cambi il datasource della griglia facendolo puntare sulla vista.

ScaricoDataGridView.DataSource = vdatFiltra

secondo me prima di associare il dataset orginale alla griglia devi vedere se è possibile effettuare il filtro direttamente sul dataset

e qui vado ad occhio... (anche perchè adesso su questo pc non ho neanche il VS ) visto che sono su linux

comunque... mi chiedo se tu possa eseguire una cosa del genere direttamente sul dataset invece che sulla vista:
With Me.MagazzinoGommeDataSet.Scarico .Filter = "data>=#" & strFiltro & "# and data<=#" & strFiltro1 & "#" .Sort = "data" End With

fammi sapere...

spero di esserti stato utile anche così "alla cieca"
La ricompensa per una cosa ben fatta, è averla fatta.

jtpsala Profilo | Senior Member

Ti ringrazio immensamente.
Funziona benissimo così.
Grazie, ancora grazie.
Ciaooo

Lanello Profilo | Senior Member

ottimo!!!
La ricompensa per una cosa ben fatta, è averla fatta.
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