Aggiornare i dati di una datagridview

domenica 20 luglio 2008 - 07.22

marcogio Profilo | Newbie

Utilizzo Visual C# e MySql;
attraverso un MySqlCommand, aggiorno la tabella MySql.
Vorrei poi riportare le modifiche nel DataGridView già presente. Utilizzo perciò dataAdapterFill(DataSet,"tabella"). Però il DataGridView anzichè aggiornare i dati presenti, ricarica tutti i dati dalla tabella sottostante. Ottengo così sul DataGridView sia i vecchi che i nuovi dati.
Sottolineo che la tabella MySql ha una chiave primaria e che se riavvio il programma, DataGridView mostra i dati regolarmente una sola volta.
Evidentemente il programma non tiene conto della chiave primaria e crede che i record debbano essere aggiunti e non modificati. Qualcuno conosce la soluzione? Grazie.

paoval72 Profilo | Senior Member

Ciao, puoi postare sia l'html del datagridview che il codice con cui fai il bind?
Grazie,
Paolo

marcogio Profilo | Newbie

questo è il corpo principale del programma:

code:
--------------------------------
private void Form1_Load(object sender, EventArgs e)
{
//implementazione per bnl
connessione = "Data Source=localhost;Database=miodatabase;User Id=miouser; Password=miapassword";
cnbanca = new MySqlConnection(connessione);
querybanca = "SELECT * FROM banca";
dabanca = new MySqlDataAdapter(querybanca, cnbanca);
dsbanca = new DataSet();
cnbanca.Open();
dabanca.FillSchema(dsbanca, SchemaType.Source);
dabanca.Fill(dsbanca, "tabellaBanca");
cnbanca.Close();
cbbanca = new MySqlCommandBuilder(dabanca);
bsbanca = new BindingSource();
bsbanca.DataSource = dsbanca;
bsbanca.DataMember = "tabellaBanca";
bsbanca.Sort = "data";
dataGridView1.DataSource = bsbanca;
-----------------------------

questo è invece l'evento che aggiorna la tabella di database sottostante, con il codice per inserire le modifiche nel datagridview.

code
----------------------------
private void toolStripButton25_Click(object sender, EventArgs e)
{
Form7 finestraGestioneEstrattoConto = new Form7();
DialogResult dataEstrattoConto = finestraGestioneEstrattoConto.ShowDialog();

if (dataEstrattoConto == DialogResult.Yes)
{
MySqlCommand cmInserisciDataEstratto = new MySqlCommand();
cmInserisciDataEstratto.Connection = cnbanca;
cmInserisciDataEstratto.CommandText = "UPDATE banca SET estratto ='"+finestraGestioneEstrattoConto.getDataEstratto()+"'"+
"WHERE (data BETWEEN '"+finestraGestioneEstrattoConto.getDataInizioNoEss()+"' AND '"+finestraGestioneEstrattoConto.getDataFineNoEss()+"' AND modalita <> 'pagamento fidelity')" +
"OR (data BETWEEN '"+finestraGestioneEstrattoConto.getDataInizioEss()+"' AND '"+finestraGestioneEstrattoConto.getDataFineEss()+"' AND modalita = 'pagamento fidelity')";

cnbanca.Open();
cmInserisciDataEstratto.ExecuteNonQuery();
dsbanca.Tables["tabellaBanca"].Clear(); //aggiunto successivamente
dabanca.Fill(dsbanca, "tabellaBanca");
cnbanca.Close();

}

}
-----------------------------------

come puoi notare, ho aggiunto la riga
dsbanca.Tables["tabellaBanca"].Clear();
per risolvere, almeno in via provvisoria il problema. Credo però che Fill() dovrebbe inserire solo le modifiche, senza la necessità di cancellare tutto il contenuto del datatable.
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