我有一個刪除從列表,它是源數據網格項目將導致觸發選擇改變在同一網格
ObservableCollection<ProductTemporary> result = ProductsTempController.Instance.SelectAll();
被以源極到我的DataGrid,並通過按下DEL而在數據網格項目中選擇我刪除它:
if (e.Key == Key.Delete)
{
if (dataGridProducts.SelectedItem != null)
{
ProductTemporary tempItem = (ProductTemporary)dataGridProducts.SelectedItem;
ProductTemporaryController.Instance.Delete(tempItem.Id);
dataGridProducts.Remove(tempItem);
UpdateTotalAmount();
}
}
問題從這裏開始:
dataGridProducts.Remove(tempItem);
此行dataGridPr後觸發了改變選項,所以我失去了對我的網格項目的關注,並且我想要通過選擇一個並保持DEL按下來刪除所有項目。
所以,我怎麼能避免改變其源(dataGridProducts.Remove(tempItem))後,觸發dataGridProducts選擇更改事件,我試圖與e.Handled=true
,像這樣:
if (e.Key == Key.Delete)
{
e.Handled=true;
if (dataGridProducts.SelectedItem != null)
{
ProductTemporary tempItem = (ProductTemporary)dataGridProducts.SelectedItem;
ProductTemporaryController.Instance.Delete(tempItem.Id);
dataGridProducts.Remove(tempItem);
}
}
但事與願違幫助我..
謝謝你們 乾杯
**後MM8建議我做編輯:** 7
if (e.Key == Key.Delete)
{
if (dataGridProducts.SelectedItem != null)
{
ProductTemporary tempItem = (ProductTemporary)dataGridProducts.SelectedItem;
ProductTemporaryController.Instance.Delete(tempItem.Id);
}
UpdateTotalAmount();
}
但不知何故,每次我在DataGrid中刪除的項目,可以說我有DataGrid中2項,當我按下DEL鍵,也可以從UI中消失,但在背後UpdateTotalAmount方法代碼調用,並在我的ObservableCollection<ProductTemporary> result
有仍然是兩個項目,因此它會告訴我的兩個項目,而不是一個總量..
這裏是我的方法的代碼:
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'中刪除項目,因爲後來我循環了'ObservableCollection',它也是我的源數據網格,因爲它包含產品信息,如標題,價格等,我也顯示在我的window.xaml總金額 - 價格總和,所以當我從datagrid刪除項目acctualy需要從'ObservableCollection'刪除它,因爲我需要更新我的datagrid中的產品總量..我正在這樣做,正如我所說的通過循環我的ObservableCollection'並提供價格... –
有一種解決方案,從數據庫中刪除項目,然後當我更新總金額,調用'ObservableCollection result = ProductsTempController.Instance.SelectAll();'和像這樣我會從數據庫中得到更新的項目,我會得到正確的總和,但我認爲這是壞的方法,因爲我每次從dataGrid中刪除項目時都調用GET ALL TEMP PRODUCTS .. –
問題是DataGrid刪除ObservableCollection中的項目會在按下刪除鍵時自動爲您自動執行。這是建立在功能。你甚至嘗試過我的建議嗎?它爲我創造奇蹟。 – mm8