Aggiornamento Datagridview

martedì 18 settembre 2007 - 17.26

sergioska Profilo | Newbie

Salve a tutti,

Ho una form all' interno del quale c'è un datagridview che mi fa vedere dei dati presenti nel db (tramite un tableadapter).
In questa form c'è un tasto che apre un' altra form dove si inseriscono dei dati che sul click di un tasto salva vengono salvati sul db.
Il mio problema è questo: i dati vengono salvati sul database, ma non riesco ad aggiornare il datagridview senza aprire e chiudere la form dove si trova il datagridview.
Come posso fare?
Io ho provonto nel seguente modo, ma non sono riuscito:

// Nuova riga
DataRow dr = tblProdottiTableAdapter.GetDataByCategoria().NewRow();

// Recupero l' ultima riga inserita nel database
dr[1] = tblProdottiTableAdapter.GetDataByCategoria().Rows[tblProdottiTableAdapter.GetDataByCategoria().Rows.Count - 1].ItemArray.GetValue(1).ToString();
.
.
.

// Inserisco nel dataset la nuova riga
gestionaleDataSet.Tables["tblProdotti"].Rows.Add(dr); // ***

gestionaleDataSet.AcceptChanges();

In questo modo a run time, alla riga che ho indicato con i tre asterischi mi errore, dicendo che la riga è già presente in un' altra tabella

Qualcuno può gentilmente aiutarmi? Magari sto sbagliando completamente strada.
Grazie in anticipo. Ciao

SSUPERPIPPO Profilo | Guru

Ti conviene creare una Subroutine che crei il DataTable ed effettui il binding con il DataGridView; la richiamerai ogni volta che aggiungi un record.

In questo modo:

Private Sub CaricaDataGrid

Dim TuoDataAdaptera as new SqlDataAdapter

'...
'Istruzioni che creano il DataTable ed effettuano il binding con il DataGridView
'

End Sub

Richiami questa Sub all'evento Load del tuo Form e ogni volta che aggiungi un record alla tabella.

Ciao

Alessandro

http://blogs.dotnethell.it/alebadalin

sergioska Profilo | Newbie

Ciao e grazie mille per l'aiuto, ti sarei ancora + grato se potessi essere un + esplicito, perchè sto provando, ma non sto provando come mi hai suggerito, ma non riesco a capire dov'è l' inghippo.
Grazie Ciao

SSUPERPIPPO Profilo | Guru

Cerco di spiegarmi meglio.

Tu avrai già gestito l'apertura del DataBase, la creazione del DataSet con un DataAdapter (fill) e il binding del DataTable con il DataGridView... e immagino tu abbia inserito il codice all'evento load del tuo form.
Bene, a questo punto devi inserire quel codice dentro a una subroutine.
Questa subroutine dovrai richiamarla dall'evento load del form (quindi funzionerà esattamente come prima).
La stessa chiamata la dovrai inserire nell'evento click del tuo command button dopo la chiamata del metodo ShowDialog del form secondario.

In questo modo il tuo DataSet e relativo DataAdapter si rigenerano ogni volta che effettui la chiamata.

Spero di essere stato abbastanza chiaro, in caso postami il codice che hai attualmente scritto nel tuo form così te lo modifico io in modo opportuno.

Ciao

Alessandro

http://blogs.dotnethell.it/alebadalin

sergioska Profilo | Newbie

Ciao, credo di aver risolto più o meno come mi hai indicato tu, in questo modo:

SqlDataAdapter sql = new SqlDataAdapter();
// Connessione
SqlConnection conn = new SqlConnection(connString);
// Comando query da eseguire
SqlCommand cmd = new SqlCommand("SELECT * FROM tblProdotti WHERE id_Fornitore="+txtId.Text+";", conn);
cmd.CommandType = CommandType.Text;
// Esecuzione della query
sql.SelectCommand = cmd;
// Riempimento del nuovo DataTable
sql.Fill(ddt);
// Associazione del DataTable riempito al DataSource del DataGridView
tblProdottiDataGridView.DataSource = ddt;

Intendevi questo?
Grazie ancora per la disponibilità. Ciao

SSUPERPIPPO Profilo | Guru

Yes!

Ciao

Ale

http://blogs.dotnethell.it/alebadalin
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