c# - 从 WPF 数据网格中删除行

标签 c# wpf data-binding datagrid

我有一个 WPF DataGrid theDataGrid 绑定(bind)到一个包含表格的 DataSet ds。我想让用户通过首先在网格中选择它们然后按下一个按钮(位于数据网格之外的某个地方)来删除线。我终于得到了以下代码行,它们可以执行我想要的操作,但我认为它们相当丑陋:

  DataSet ds = new DataSet();
        ...
  // fill ds somehow
        ...
  private void ButtonClickHandler(object Sender, RoutedEventArgs e) 
  {
        List<DataRow> theRows = new List<DataRow>();
        for (int i = 0; i < theDataGrid.SelectedItems.Count; ++i)
        {
            // o is only introduced to be able to inspect it during debugging
            Object o = theDataGrid.SelectedItems[i];
            if (o != CollectionView.NewItemPlaceholder)
            {
                DataRowView r = (DataRowView)o;
                theRows.Add(r.Row);
            }
        }
        foreach(DataRow r in theRows) 
        {                
            int k = ds.Tables["producer"].Rows.IndexOf(r);
            // don't remove() but delete() cause of update later on
            ds.Tables[0].Rows[k].Delete();
        }
   }

有更好的方法吗?例如。一个只需要一个循环且无需显式检查 NewItemPlaceHolder 的方法,或者可能是一种更有效的方法来访问要删除的行?

(我已经知道我不能在第一个循环中从 ds 中删除任何东西,从那时起每次执行循环时 theDataGrid.SelectedItems.Count 都会改变...)

最佳答案

为了删除按钮上选择的行,您可以尝试:

private void ButtonClickHandler(object sender, RoutedEventArgs e)//Remove row selected
     {
      DataRowView dataRow = (DataRowView)dataGridCodes.SelectedItem; //dataRow holds the selection
      dataRow.Delete();                    
     }

关于c# - 从 WPF 数据网格中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14031814/

相关文章:

json - 如何将动态 json 绑定(bind)到 treeview wpf

java - 如何在 Play 中将动态表单字段绑定(bind)到 HashSet!用Java?

wpf - 如何检测损坏的 WPF 数据绑定(bind)?

c# - Windows 操作系统中无法访问的 IP 套接字关闭时间

c# - asp.net 母版页中的 Javascript 代码依赖于当前打开的页面

c# - 如何从 GridView 获取 BoundField

c# - 遇到 Nhibernate 和 ManyToOne 属性问题

wpf - WPF用户控件: Image disappears even with 'x:Shared=“False” '

c# - WPF/C# - 从 XAML 以编程方式创建 FlowDocument?

javascript - 从外部源绑定(bind)图像