首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET Framework >

wpf DataGrid 删除多行解决思路

2013-01-25 
wpf DataGrid删除多行各位老师好!在界面上添加一个DataGrid控件,绑定一个DataTable数据源。this.datagrid.I

wpf DataGrid 删除多行
各位老师好!

  在界面上添加一个DataGrid控件,绑定一个DataTable数据源。
  


this.datagrid.ItemsSource = table.DefaultView;

这种绑定,完全能将dataTable的数据显示在dataGrid上。这个没有问题。我在DataGrid第一列添加一项CheckBox
xaml 文件清单如下:

<DataGrid HorizontalAlignment="Left" Margin="12,71,0,150" Name="datagrid"  Width="853" CanUserAddRows="false" AutoGenerateColumns="True" LayoutUpdated="datagrid_LayoutUpdated"   Loaded="datagrid_Loaded"  >      
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="选择">
                    <DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate />
                    </DataGridTemplateColumn.CellEditingTemplate>
                    
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <CheckBox Checked="CheckBox_Checked" Tag="{Binding Path= id}" Name="select"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>               
            </DataGrid.Columns>
       </DataGrid>


我想删除复选框选中的行,
遍历datagrid然后删除的代码是:
 

  foreach (var item in datagrid.Items)
             {
                 DataGridTemplateColumn templeColumn = datagrid.Columns[0] as DataGridTemplateColumn;
                 FrameworkElement s = datagrid.Columns[0].GetCellContent(item);
                 DataView view = new DataView();
                 
                 System.Windows.Controls.CheckBox cb = templeColumn.CellTemplate.FindName("select", s) as System.Windows.Controls.CheckBox;


                 if (cb.IsChecked == true)
                 {
                     System.Windows.MessageBox.Show(Convert.ToString(cb.Tag));
                     datagrid.Items.Remove(item);                     
                 }
             }
  




最后的问题,在运行到 datagrid.Items.Remove(item);   出现异常。具体异常信息:
{"Operation is not valid while ItemsSource is in use. Access and modify elements with ItemsControl.ItemsSource instead."}

请问诸位老师,怎么解决这个问题。多谢了!!
[解决办法]
http://go4answers.webhost4life.com/Example/removing-all-items-databound-listview-172040.aspx

热点排行