我在處理datagridView中的數據修改時遇到了小問題。 我一個DataSource綁定到DataGridView就像這樣:處理ObservableCollection中的更改
private void Form1_Load(object sender, EventArgs e)
{
var customersQuery = new ObservableCollection<Payment>(context.Payments);
customersQuery.CollectionChanged += new NotifyCollectionChangedEventHandler(customerQuery_Changed);
dataGridView1.DataSource = new BindingSource() { DataSource = customersQuery };
}
OrdersDataModelContainer context = new OrdersDataModelContainer();
,我處理類似下面的變化:
private void customerQuery_Changed(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if (e.Action == NotifyCollectionChangedAction.Add)
{
foreach (Payment p in e.NewItems)
{
context.Payments.Add(p);
}
}
if (e.Action == NotifyCollectionChangedAction.Remove)
{
foreach (Payment p in e.OldItems)
{
context.Payments.Remove(p);
}
}
context.SaveChanges();
}
刪除的作品,但不添加這麼好。當我點擊新行時,添加動作被稱爲co我得到異常,因爲單元格是空的。簡單地說,我可以在插入完成後改變行爲來調用Add,並切換到下一行? 另一個問題是修改現有的數據行。只有在插入新數據後才更新數據庫。
任何人都可以給我解決方案或點我應該搜索它?
它的工作原理。謝謝。但是還有沒有更「優雅」的方式? – szpic
我試圖找到綁定選項,即在添加一個之後,「在未更新集合上從新行更新集合」,但沒有看到這樣的結果。空行出現在網格上時創建空實體,更新值,更新時看起來足夠優雅。 – Nikita
是的。你是對的,但我必須再處理一個選項。當有人決定添加newRow然後將其留空時刪除:) – szpic