[C# 2008] Definire come sorgente dati di una form, dati filtrati prese...

martedì 11 novembre 2008 - 17.47

mikkmikk Profilo | Newbie

Vi spiego in dettaglio cosa vorrei fare:
ho una datagridview popolata con dei record del mio database filtrati in base ad una query.
Effettuando un doubleclick su ogni riga della datagridview faccio aprire una form (che chiamerò articoli_mod) per la modifica del record su cui ho effettuato il doppio click.
Fin qui tutto ok.
Nella form articoli_mod vorrei inserire un controllo binding navigator per navigare tra i records filtrati presenti nella datagridview di partenza, sulla quale ho effettuato doppio click.
Come posso fare a dire al binding navigator di navigare tra i dati della datagridview di partenza da cui ho effettuato il doppio click per l'apertura della maschera?
Grazie a chiunque possa darmi un aiuto in tal senso.


Snippet che filtra i dati all'interno della datagridview in base alla query q sul datacontext:


idc = new InesDBDataContext(); q = from c in idc.tb_articoli select c;
...

listaArticoli.griglia.Columns.Insert(1, Col_idArticolo); listaArticoli.griglia.Columns.Insert(2, Col_nome); listaArticoli.griglia.Columns.Insert(3, Col_prezzo); listaArticoli.griglia.Columns.Insert(4, Col_fornitore); myBindingSource.DataSource = q; listaArticoli.griglia.DataSource = myBindingSource;

....






Snippet del doppio click su datagridview:


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

Teech Profilo | Expert

Puoi passare il BindingSource nel costruttore (utilizzando eventualmente un costruttore in Overload) della Forma Articoli_mod ed associarlo al BindingNavigator.
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

mikkmikk Profilo | Newbie

Grazie Maurizio per la gentilissima e rapida risposta...
ma il problema è il seguente:

potrei avere una datagridview di partenza che fa il join tra più tabelle del database.
Ad esempio:
ho una datagridview i cui records sono articoli con le colonne id articolo, nome articolo e prezzo articolo prese dalla tabella articoli, ma con le colonne quantità in magazzino, ultimo prezzo di carico, nome fornitore che sono frutto di join con altre tabelle.
Effettuando il double click sul record della datagridview, e quindi aprendo la form articoli_mod per la modifica articolo, sicuramente avrei problemi per la presenza dei join nella datagridview di partenza.

Inoltre, se l'utente cambiasse l'ordinamento dei records nella datagridview di partenza (cliccando sugli headers delle colonne), tale ordinamento modificherebbe la visualizzazione della griglia, ma non modificherebbe il bindingsource, e quindi scorrendo con il bindingnavigator nella form articoli_mod, l'ordine degli articoli sarebbe errato.

Help me, please...

Teech Profilo | Expert

Onestamente vedo una soluzione che non so quanto può essere percorribile in quanto non ho mai incontrato quella problematica e non ho mai testato nello specifico questi oggetti... Diciamo che provo a darti 2 tracce senza certezza di soluzione:
1. Puoi passare al tuo BinginsSource, come DataSource una collection di oggetti da te gestita. Popoli la collection con i delle entità che fanno il parsing dei tuoi dati dal databse (può essere una traccia che non so quanto sia percorribile)
2. Puoi provare a passare al form il BindingContex del tuo DataGridView... Onestamente non ho mai approfondito il BindingContex però so che esiste e potrebe essere l'oggetto che cerchi...

In alternativa puoi usare un pagliativo ma funzionale... Nella Form dove gestisci gli articoli ne gestisci uno alla volta in base a quello selezionato in griglia.. Onestamente non vedo perchè, se seleziono un articolo dopo devo poterne modificare anche altri, ma questo è un mio semplice ragionamento fuori contesto che lascia il tempo che trova...

Spero di averti almeno dato un input corretto.

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

mikkmikk Profilo | Newbie

OK, forse è meglio trattarli uno alla volta... hai ragione.
Grazie per il tuo aiuto.

Teech Profilo | Expert

>OK, forse è meglio trattarli uno alla volta... hai ragione.
E' un punto di vista per aggirare il problema invece di risolverlo (a volte serve fare anche questo)
>Grazie per il tuo aiuto.
Se ritieni soddisfacente la risposta accettala per cortesia... Grazie!!!
--------------
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5