我有一個DataGrid,其中包含有關產品的信息,例如NAME和PRICE, 通過按下DEL鍵(刪除大小寫)可以從DataGrid添加或刪除項目。從ObservableCollection中移除項目的問題,我做錯了
我使用的ObservableCollection作爲DataGrid的來源,它看起來像這樣:
ObservableCollection<ProductTemporary> result = ProductsTempController.Instance.SelectAll();
也有是在我的窗口,它是保持我的產品的價格和更新所有的時間,當添加的項目和按鈕是增加,當項目被刪除總和減少,東西像那樣..
在我的情況我有我的集合中刪除項目的問題,以及我說我按DEL鍵做這件事,所以這裏是我的代碼:
if (e.Key == Key.Delete)
{
if (dataGridProducts.SelectedItem != null)
{
ProductTemporary tempItem = (ProductTemporary)dataGridProducts.SelectedItem;
ProductTemporaryController.Instance.Delete(tempItem.Id);
UpdateTotalAmount();
}
}
public void UpdateTotalAmount()
{
double sum = 0;
foreach (var item in result)
{
sum += Convert.ToDouble(item.TotalAmount);
}
btnTotal.Content = string.Format("{0:0.00}", sum) + " " + EUR;
}
由於可以看到,首先我從數據庫中刪除的項目,的ObservableCollection會照顧到從UI刪除它,但我仍然有在這種情況下問題:
比方說,有2項在數據網格,當用戶按下del時,項目將從數據庫中刪除,但方法UpdateTotalAmount();之後將被調用,並在我的收藏將有兩個項目,我會看到incorect總和..
所以也許我沒有做這個UpdateTotalAmount呼籲正確的地點或水木清華那樣,
我也想過這個解決方案:
在存儲過程中,正在刪除項目,我可以從數據庫發回總項目的總和,所以在這種情況下,我不需要循環任何集合做這樣的smth,但我認爲它不是很好的做法?
謝謝你們, 乾杯
FWIW這種東西在使用MVVM時會更容易 – BradleyDotNET
@BradleyDotNET FWIW? –
值得推薦 – BradleyDotNET