23/10/2025 - Sgrubak ha scritto:
23/10/2025 - pordoi ha scritto:
come aggiornare la tabella database modificando la griglia.
Ci sono un milione di modi diversi. Se usi i DataSet tipizzati si fa in un modo, se usi EF si fa in un altro.
Io utilizzo una terza via che assomiglia ad EF, ma è "home made": creo una classe che rappresenta una riga della tabella e preparo un flag [Modificato] ed un metodo [Update]. Quando devo visualizzare, organizzo gli oggetti in una ObservableCollection<oggetto> e la bindo al controllo. Quando aggiungo/rimuovo, opero sulla lista. Quando aggiorno un elemento cambio [Modificato] e se salvo, ciclo la lista richiamato l'Update solo se Modificato = true.
Casereccio, ma è semplice e non devo studiarmi EF, che per quel che faccio io è per me macchinoso.
ascolto il consiglio sicuramente. Per adesso mi sto facendo pratica, di solito facevo Update.
ho trovato questo metodo ,ma adesso ne vedo altri
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Threading;
using Dapper;
namespace provePannelloDinamico
{
public partial class primo : UserControl
{
private readonly string connectionString =
@"Data Source=ACER\SQLEXPRESS;Initial Catalog=xxxMMI;Integrated Security=True;Encrypt=False;";
public primo()
{
InitializeComponent();
LoadData();
}
private void LoadData()
{
try
{
DataTable table = new DataTable();
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand("SELECT * FROM dbo.anagrafe", connection))
{
SqlDataAdapter adapter = new SqlDataAdapter(command);
adapter.Fill(table);
}
}
datagrid.ItemsSource = table.DefaultView;
}
catch (Exception ex)
{
MessageBox.Show("Errore durante il caricamento dei dati: " + ex.Message);
}
}
private void DataGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
if (e.EditAction == DataGridEditAction.Commit)
{
Dispatcher.BeginInvoke(new Action(() =>
{
var item = e.Row.Item as DataRowView;
if (item != null)
{
// Prendi i valori dalle colonne
string cmd = item["cmd"].ToString();
string nome = item["nome"].ToString();
string cognome = item["cognome"].ToString();
// Salva nel database
SalvaDatabase(cmd, nome, cognome);
}
}), System.Windows.Threading.DispatcherPriority.Background);
}
}
private void SalvaDatabase(string cmd, string nome, string cognome)
{
try
{
using (var connection = new SqlConnection(connectionString))
{
// Corretto: mancava virgola dopo Nome
string sql = "UPDATE anagrafe SET nome = @Nome, cognome = @Cognome WHERE cmd = @Cmd";
connection.Execute(sql, new { Cmd = cmd, Nome = nome, Cognome = cognome });
}
MessageBox.Show("Dati salvati con successo!");
}
catch (Exception ex)
{
MessageBox.Show("Errore durante il salvataggio: " + ex.Message);
}
}
}
}