J'ai été capable de configurer une base de données WPF, d'afficher une table de base de données Northwind via linq-to-sql et de gérer l'événement TheDataGrid_RowEditEnding afin de sauvegarder la base de données.Comment annuler les modifications apportées au contrôle WPG DataGrid à l'aide de LINQ-to-SQL?
Toutefois, lorsqu'un code client a été modifié, il reçoit une erreur de la base de données que je gère, mais comment puis-je maintenant (1) restaurer le contrôle Datagrid ou (2) restaurer les données d'origine de la vue de base de données LINQ -À-SQL (le refetching que je fais ci-dessous via LINQ semble avoir une sorte de mise en cache, il ne met pas à jour):
<Grid DockPanel.Dock="Bottom">
<toolkit:DataGrid x:Name="TheDataGrid"
AutoGenerateColumns="True"
RowEditEnding="TheDataGrid_RowEditEnding"/>
</Grid>
private void TheDataGrid_RowEditEnding(object sender, Microsoft.Windows.Controls.DataGridRowEditEndingEventArgs e)
{
try
{
_db.SubmitChanges();
}
catch (Exception ex)
{
RefreshData();
Message.Text = ex.Message;
}
}
public void RefreshData()
{
var customers = from c in _db.Customers
select c;
TheDataGrid.ItemsSource = customers;
}
RÉPONSE:
Merci Denis, je vos suggestions obtenir ce que j'étais après:
private void TheDataGrid_RowEditEnding(object sender, Microsoft.Windows.Controls.DataGridRowEditEndingEventArgs e)
{
try
{
_db.SubmitChanges();
}
catch (Exception ex)
{
Customer customer = e.Row.Item as Customer;
_db.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, customer);
Message.Text = ex.Message;
}
}