私は(Entity Frameworkの経由)、私は、データベースへのeditted細胞のすべてを保存したい ...その細胞のいずれか、または編集可能読み取り専用ことができます(ダブルクリックして)編集可能なデータグリッドを作成したいと思います...WPF GridViewを編集してデータベースに保存する方法は?
いくつかの列では、テキストフィールドの代わりにコンボボックスを表示する必要があります。
これを達成するにはどうすればよいですか?
私は(Entity Frameworkの経由)、私は、データベースへのeditted細胞のすべてを保存したい ...その細胞のいずれか、または編集可能読み取り専用ことができます(ダブルクリックして)編集可能なデータグリッドを作成したいと思います...WPF GridViewを編集してデータベースに保存する方法は?
いくつかの列では、テキストフィールドの代わりにコンボボックスを表示する必要があります。
これを達成するにはどうすればよいですか?
MVVMを使用しているかどうかによって異なります。
いずれの方法で保存するかを決める必要があります。保存ボタンはありますか?または、編集内容が作成されるとすぐに保存されます。 (最後の1つはあなたのDBにとってひどいですが、あなた次第です)
編集では、キャプチャできるイベントが生成されます。また、保存ボタンをクリックするとイベントが発生します。
保存ボタン 保存ボタンが必要な場合があります。
ボタンのクリックイベントが発生すると、コードを呼び出してdbに保存します。あなたのdbを知らないと、これはUIスレッド上で発生しないように、これを別のスレッドにファーム化する必要があることを除いては、はるかに多くを伝えることはできません。詳細はTask.Runを見てください。
編集時に保存 基本的には上記と同じですが、あなたはもっと頻繁に会話を終えることになります。それぞれのキーを押すと実際には、それはなぜあなたのデータベースでより難しいです。 基本的に、キー押しまたはキーアップイベントをトラップしてから、情報をDBに保存します。
使用このコード:
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>
ご協力ありがとうございます。完全なサンプルコードを教えていただけますか? –
は、あなたの助けのためにどうもありがとうございます。 私はMVVMを使用せず、私のデータベースはSQL Serverです。 –