Newsgroup: it.comp.lang.visual-basic
Titolo: ottenere una datatable da datagridview

ciao a tutti,
ho una datagridview in binding con una datatable.
1)Se applico un filtro al databindingsouce, vedrò soltanto alcune righe. 
Esiste un modo di ottenere una datatable avente soltanto quelle righe?
2) Se invece dalla datagridview seleziono N righe, come faccio ad ottenere 
una datatable avente soltanto le righe selezionate?
Grazie
 

 wrote in
news:4c592ab9$0$12131$
4faf...@reader4.news.tin.it
: 

al posto della datatable non puoi usare una dataview?
filtri, ordini, puoi usarla per i databind.
oppure ti serve per forza una datatable con solo le righe che hai scelto?
spiega cosa vuoi fare, non il metodo che stai tentando di usare...
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

 una datatable avente soltanto le righe selezionate?
Devi usare es. DefaultView della datatable, qui un esempio di una griglia
agganciata ad un bindingsource agganciato ad un datatable:
Dim dt As DataTable = DirectCast(DirectCast(grd1.DataSource,
BindingSource).DataSource, DataTable)
dt.DefaultView.RowFilter = "COGNNOME like '" & txt1.Text.Replace("'"c,
"''") & "%'"


Semplice, ho un dataset con dentro varie datatable.
Una di queste datatable viene visualizzata su una griglia e su questa 
l'utente o selezionaerà qualche forma di filtro che devo prevedere oppure 
manualmente puo selezionare alcune righe. Una volta fatto questo a me 
interessa ricavare la datatable che contiene soltanto le righe filtrate(nel 
primo caso) o le righe selezionate (nel secondo caso)
 

 
attenzione perche' ottieni la datatable originale con *TUTTE* le righe 
contenute nella tabella.
la mia domanda sul *cosa* devi fare con le righe non era fatta tanto per 
fare...


 fare...
ok, pero mi pare di aver risposto: ottenere una datatable contente solo le 
righe selezionate dall'utente o solo quelle visualizzate dopo aver applicato 
un filtro( ad esempio sul databing)
 

 un filtro( ad esempio sul databing)
Che io sappia lo devi creare a mano.
Non puoi fare una funzione che restituisce un array/list di qualcosa? Di
datarow, di datagridviewrow, di classi a seconda di quello che vuoi.
Da una parte le righe sono in datagridview.selectedrows, dall'altra sono
quelle visibili sulla griglia o quelle del DefaultView o quello che sarà.

 quelle visibili sulla griglia o quelle del DefaultView o quello che sarà.
Supponendo di far visualizzare soltanto alcuni campi nella datagridview, 
usando datagridview.selectedrows non perdo le altre informazioni?
 

 usando datagridview.selectedrows non perdo le altre informazioni?
Non hai ancora risposto alle domande che ti avevano posto, a te ti serve
avere questo datatable che contiene O le righe seleziona O le righe
filtrate sul datatable, per farci cosa???
Quando hai questo datatable filtrato a che ti serve?
A "quella cosa" a cui serve non puoi passare un array di DataRow o a scelta
tua di una classe, o di DataGridViewRow?


Il Sig. Alcibiade alla domanda "spiegaci cosa vuoi fare" non riesce a 
rispondere... guardate il post del 27/07/2010!
Comunque, rispondo ad Alcibiade... puoi fare una cosa del genere:
crei 2 datatable identici, il primo conterrà tutte le righe da filtrare 
(es. dtOrigine) e il secondo servirà per buttarci dentro il risultato 
(dtDestinazione)
Dopo aver popolato dtOrigine applichi il filtro che vuoi in questo modo:
Dim drFind() As DataRow
drFind = dtOrigine.Select(String.Format("CampoDaFiltrare={0}", filtro))
If drFind.Length > 0 Then
  'Fai un ciclo for sul contenuto di drFind
  'aggiungendole a dtDestinazione	
End If
Per mostrare i record crea un dataview partendo da dtDestinazione in 
modo da poter ordinare e filtrare ulteriormente i dati solo "a video".
Spero di essere stato chiaro.
Ciao, Vincenzo

 filtrate sul datatable, per farci cosa???
Le devo importare su dei palmari: avendo quindi tabelle, relazioni etc, 
userei la funzionalità di lettura xml  .
 


Questo è il filtro con datarow su datatable di origine....avevo pensato a 
questo ma la domanda era un'altra:
considerando che la datagridview è in binding con la datasource, applicherei 
il filtro in questo modo:
es: bindingSource.filter="id >3".
e in datagridview avrò a video solo i campi filtrati
E' possibile risalire a questa datasource filtrata?
 

 rispondere... guardate il post del 27/07/2010!
Quella era un'altra questione e se guardi ti ho postato anche l'esempio di 
quello che mi serviva(come mi avvei chiesto ): certo avevo un nick diverso 
ma ero su un altro pc :D
 

 ha scritto nel messaggio 
news:4c592ab9$0$12131$4faf...@reader4.news.tin.it...

il proverbio dice : chi fa da sa fa per tre.....
Magari può interessare a qualcuno 
http://social.msdn.microsoft.com/Forums/en-US/vblanguage/thread/9be8cea3-8e5f-4d52-8258-ae494a7a5019