读书人

关于Datagrid编辑取消重新绑定数据的有

发布时间: 2013-10-27 15:21:50 作者: rapoo

关于Datagrid编辑取消重新绑定数据的问题?请教各位,先谢谢了
silverlight4 + sql2008 +.net2010
movieDataGrid(DataGrid)和movieGrid(Grid)中的几个textbox间建立了双向绑定,当textbox中的数据修改后想取消修改,对movieDataGrid做了重新绑定数据,但未刷新为原始数据,求教正确的做法。

以下是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using SLA20131023.Web;
using System.Windows.Data;
using System.ServiceModel.DomainServices.Client;

namespace SLA20131023
{
public partial class MainPage : UserControl
{
private movieDomainContext movieCtx = new movieDomainContext();
private LoadOperation<Movie> loadop;

public MainPage()
{
InitializeComponent();
loadop = this.movieCtx.Load(movieCtx.GetMovieQuery());
loadop.Completed += new EventHandler(loadop_Completed);


}

void loadop_Completed(object sender, EventArgs e)
{
PagedCollectionView pager = new PagedCollectionView(loadop.Entities);
pager.PageSize = 5;
movieDataGrid.ItemsSource = pager;
movieDataPager.Source = pager;


}

private void movieDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
movieGrid.DataContext = movieDataGrid.SelectedItem;
}

private void btnCancel_Click(object sender, RoutedEventArgs e) //取消操作
{
movieDataGrid.ItemsSource = null;
movieDataGrid.ItemsSource = movieCtx.Movies;
movieGrid.DataContext = null;
movieGrid.DataContext = movieDataGrid.SelectedItem;
}
}
}

界面在此:
关于Datagrid编辑取消重新绑定数据的有关问题?先多谢了
[解决办法]

        private ObservableCollection<Movie> _BackUp;

public MainWindow()
{
InitializeComponent();

_BackUp = new ObservableCollection<Movie>();

try {
using (MovieEntities db = new MovieEntities()) {
var source = db.Movie.ToList();

//首次备份
_BackUp = MyCopy(source);



this.movieDataGrid.ItemsSource = source;
}
} catch (Exception ex) {
MessageBox.Show(ex.ToString());
}
}

//取消
private void Button_Click(object sender, RoutedEventArgs e)
{
var temp = MyCopy(_BackUp);
this.movieDataGrid.ItemsSource = temp;
}

private ObservableCollection<Movie> MyCopy(IEnumerable<Movie> source)
{
ObservableCollection<Movie> result = new ObservableCollection<Movie>();

foreach (var obj in source) {
Movie m = new Movie();
m.id = obj.id;
m.Name = obj.Name;
m.Price = obj.Price;
result.Add(m);
}

return result;
}



关于Datagrid编辑取消重新绑定数据的有关问题?先多谢了

读书人网 >CAD教程

热点推荐