2012-11-27 108 views
1
IList<object> itemsSelected = MyGrid.SelectedItems; 

foreach (object itemSelected in itemsSelected) 
{ 
    MyGrid.SelectedItems.Remove(itemSelected); 
} 

我尝试从GridView中删除所选项目,但并非所有选定项目都被删除。 有人可以帮我吗?删除GridView中的选定项目

+0

这哪里是一块在页面生命周期内声明的代码? 'OnLoad','OnInit' ...? –

+0

这是一个按钮的应用程序栏的动作,删除选定的项目。 – CodeSculptor

+0

[GridView](http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.aspx)似乎没有'SelectedItems'属性。 “SelectedItems”是否为扩展名? –

回答

3
object[] itemsSelected = MyGrid.SelectedItems.ToArray<object>(); 
     foreach (object item in itemsSelected) 
     { 
      MyGrid.Items.Remove(item); 
     } 
0

有没有例外,当您使用SelectedItems的foreach?当你删除项目时,SelectedItems数组被修改,并且foreach引发一个异常。 (虽然我试过在ListBox控件上)。尝试使用for-operator并通过索引从最后到第一个删除项目。

+0

没有例外。有些项目被删除..但其他人仍然在选中。 – CodeSculptor

+0

这就像我需要实现Java中使用的Iterator。 – CodeSculptor

0

根据您在评论中的回答,我假设您正在开发C#winforms应用程序。

是否有可能您实际使用的是ListBox而不是 a GridView

如果是这样,您应该使用ClearSelected()方法,该方法取消选择ListBox中的所有项目。

+0

Metro风格的应用程序。 – CodeSculptor

1

我的确有问题。我写了这样的事情,但它并没有删除所有项目也只是其中的一部分:

foreach(var item in MyGridView.SelectedItems) 
{ 
    MyGridView.Items.Remove(item); 
} 

但是写这将删除所有选定的项目肯定的:

while (YourGridView.SelectedItems.Count != 0) 
{ 
    YourGridView.Items.Remove(YouGridView.SelectedItem); 
}