如何在不影响数据源的情况下交换WPF中已过滤的数据网格中的行?

时间:2017-02-14 15:32:17

标签: c# wpf datagrid

我有一个由组合框过滤的Datagrid,我想使用 up down 按钮交换此数据网格中的行。

我有 up 按钮的以下代码,但在交换行之后,datagrid数据源中的项目将更改为与已过滤的项目相匹配,并且其他行也将被删除。“ p>

这是我的代码:

$Id: $

如何在不影响数据源的情况下更改订单?

2 个答案:

答案 0 :(得分:1)

我将此代码用于 up 按钮,它起作用了:

if (Datagrid1.SelectedIndex != -1 && Datagrid1.SelectedIndex != 0)
{
  int index = Datagrid_PMP.SelectedIndex;
  DataRow downrow = ((DataRowView)(Datagrid1.SelectedItem)).Row;
  DataRow temprow = sourceTable.NewRow();
  temprow.ItemArray = downrow.ItemArray;
  sourceTable.Rows.Remove(downrow);
  Datagrid1.SelectedIndex = index - 1;
  DataRow uprow = ((DataRowView)(Datagrid1.SelectedItem)).Row;
  int i = dset.Tables[2].Rows.IndexOf(uprow);
  sourceTable.Rows.InsertAt(temprow, i);
  Datagrid1.SelectedIndex = index - 1;
}

答案 1 :(得分:0)

问题在于,在下一行中,您使用当前过滤的视图替换项目列表:

Datagrid1.ItemsSource = dt.DefaultView;

在此之后,只有与您的过滤器匹配的项目才会填充网格。