2011-06-18 155 views
3

最近我一直在處理一個項目,它將數據編程導入到WPF DataGrid中。WPF DataGrid刪除SelectedItems

我幾乎完成了這個項目,但我遺漏的東西是一個按鈕來刪除選定的單元格,這就是我卡住的地方!在僅移除項目中選擇,就像CURRENTITEM但它並不比2個選擇的項目再也去除

var grid = dataGrid1; 
if (grid.SelectedIndex >= 0) 
{ 
    for (int i = 0; i <= grid.SelectedItems.Count; i++) 
    { 
     grid.Items.Remove(grid.SelectedItems[i]); 
    }; 
} 

正常工作:

使用我的DataGrid的基本知識,寫了這個代碼!

我擁有的DataGrid應至少包含至少100個項目。我已經添加了全部刪除選項,但這也是必要的。

如果有人給我解決方案,我會很感激。

回答

5

通過刪除所選項目您正在更改SelectedItems集合。你應該先複製它,然後開始刪除。

+0

非常感謝幫助! –

-1

你在這裏做什麼要刪除whaich與循環搞亂循環過程中計數的項目,以便進行復制網格,從中取出將selectedItem然後由一部開拓創新的一個equlize它的錯誤.. 檢查了這一點

var grid = dataGrid1; 
var mygrid = dataGrid1 
if (grid.SelectedIndex >= 0) 
{ 
    for (int i = 0; i <= grid.SelectedItems.Count; i++) 
    { 
    mygrid .Items.Remove(grid.SelectedItems[i]); 
    }; 
} 

grid = mygrid; 
+0

Tnx!我將SelectedItem對象複製到一個新對象中並添加到循環中。 –

+2

這不做任何事情,因爲'grid'和'mygrid'是相同的'DataGrid'。 –

-1

這個工作對我來說...

while (dataGrid1.SelectedItems.Count > 0){ 
    dataGrid1_item_source.Rows.RemoveAt(dataGrid1.SelectedIndex); 
} 
+0

如果您對DataGrid進行了排序,則他不起作用,因爲索引與基礎項目源不同。另外,它會是dataGrid1_item_source.RemoveAt(dataGrid1.SelectedIndex);行不在ObservableCollection中。 – Doug

0

這個工作對我來說...

if (DataGrid1.SelectedItem != null) 
     { 
      ((DataRowView)(DataGrid1.SelectedItem)).Row.Delete(); 
     } 
0

A,而使用的SelectedItem代替的SelectedIndex

while (dataGrid1.SelectedItems.Count > 0){ 
    if (dataGrid1.SelectedItem == CollectionView.NewItemPlaceholder) 
     dataGrid1.SelectedItems.Remove(grid.SelectedItem); 
    else 
     dataGrid1.Items.Remove(dataGrid1.SelectedItem); 
} 
3

環路這也運作良好,對我來說。

while (dataGrid1.SelectedItems.Count > 0){ 
    dataGrid1_item_source.Rows.RemoveAt(dataGrid1.SelectedIndex); 
} 
0

我和作者有同樣的問題。並發現相當美麗(我認爲)的解決方案。

所以主要問題是SelectedItems動態,當你刪除一行時,它會被重新計算。

所以我的代碼如下所示:

for (int i = -datagrid1.SelectedItems.Count; i < datagrid1.SelectedItems.Count; i++) 
     { 
      datagrid1.SelectedItems.RemoveAt(datagrid1.SelectedIndex); 
     } 

所以,每一個for循環做步驟1中的時候,datagrid1.SelectedItems.Count減1,並且變量i增加。