如何编辑和保存WPF GridView到数据库?

时间:2016-12-26 13:39:04

标签: wpf entity-framework wpf-controls wpfdatagrid

我想创建可编辑的DataGrid,其单元格可以是只读的或可编辑的(通过DoubleClicking)... 我想将所有编辑的单元格保存到数据库中(通过实体框架)...

然后在某些列中,我需要显示一个组合框而不是文本字段。

我如何实现这一目标?

2 个答案:

答案 0 :(得分:3)

使用此代码:

public class Window2Viewmodel : INotifyPropertyChanged
    {
        public Window2Viewmodel()
        {
            MyDbContext myDbContext = new MyDbContext();
            Customers = new ObservableCollection<Customer>(myDbContext.Customers.Include("Cars").ToList());
            SaveCommand = new RelayCommand(() =>
            {
                myDbContext.SaveChanges();
            });
        }

        private ObservableCollection<Customer> _customers;

        public ObservableCollection<Customer> Customers
        {
            get { return _customers; }
            set
            {
                if (_customers != value)
                {
                    _customers = value;
                    OnPropertyChanged();
                }
            }
        }


        public event PropertyChangedEventHandler PropertyChanged = delegate { };
        public void OnPropertyChanged([CallermemberNmae]string propertyName = null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }

        public RelayCommand SaveCommand { get; set; }
    }

这个XAML代码:

 <Window.Resources>
        <local:Window2Viewmodel x:Key="VM"/>
    </Window.Resources>
    <Grid DataContext="{Binding Source={StaticResource VM}}">
        <DataGrid Name="testDataGrid" ItemsSource="{Binding Customers}" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding FName}"  Header="Name"/>
                <DataGridTextColumn Binding="{Binding LName}"  Header="Lastname"/>
            </DataGrid.Columns>
        </DataGrid>
        <Button Content="Save" VerticalAlignment="Bottom" Command="{Binding SaveCommand}"/>
    </Grid>

答案 1 :(得分:2)

取决于您是否使用MVVM。

无论哪种方式,您都需要确定要保存的方式。有保存按钮吗?或者编辑后立即保存。 (最后一个对你的数据库很糟糕,但由你决定)

编辑会生成您可以捕获的事件。同时单击“保存”按钮会产生一个事件。

保存按钮 所以我们假设您需要一个保存按钮。

然后当按钮单击事件发生时,您将调用代码保存到数据库。在不知道你的数据库的情况下,我不能真正告诉你更多,除了这应该是一个不同的线程,所以它不会发生在UI线程上。查看Task.Run以获取更多信息。

保存编辑 基本上与上面相同,但你最终会更频繁地与你的数据库交谈。每个按键真的,这就是为什么你的数据库更难。 基本上,您可以捕获按键或键盘事件,然后将信息保存到数据库中。