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:
private void griglia_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
int id_articolo = (int)listaArticoli.griglia.Rows[e.RowIndex].Cells["id_articolo"].Value;
if (id_articolo >0)
{
DataGridViewRow currRow = new DataGridViewRow();
currRow=listaArticoli.griglia.SelectedRows[0];
articoli_mod am = new articoli_mod();
am.Text = "Modifica Articolo";
am.txtNome.Text = currRow.Cells["nome"].Value.ToString();
am.txtPrezzo.Text = currRow.Cells["prezzo"].Value.ToString();
am.cbFornitore.DataSource = from f in idc.tb_fornitori select f;
am.cbFornitore.SelectedValue = currRow.Cells["fornitore"].Value;
if (am.ShowDialog(this) == DialogResult.OK)
{
currRow.Cells["nome"].Value = am.txtNome.Text;
currRow.Cells["prezzo"].Value = am.txtPrezzo.Text;
currRow.Cells["fornitore"].Value = am.cbFornitore.SelectedValue.ToString();
}
}
}
Il problema è anche 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...