1

我有一个问题请帮助我:我在 WPF 中有一个名为 contacts_datagrid 的数据网格。它从具有 2 个字段(姓名、电话号码)的 CSV 文件加载数据。在运行我的应用程序时,它会从此 csv 文件加载数据。我已经放置了一个导入函数,它导入另一个 csv 文件并使用以下代码将其数据附加到第一个 csv 文件的底部:

foreach (DataRow drow in second_csv_file.Rows)
  {
   First_csv_file.Rows.Add(drow.ItemArray);
  }

它工作正常。然后我想按字母顺序对我的列进行排序,我使用这个:

ICollectionView dataView = CollectionViewSource.GetDefaultView(contacts_datagrid.ItemsSource);
dataView.SortDescriptions.Clear();
dataView.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
dataView.Refresh();  

这也可以正常工作,并且在这样做之后,我的新表中的所有合并数据都采用升序格式。当我尝试使用以下方法删除所选索引的行时,问题是在执行此操作后:

table.Rows.RemoveAt(contacts_datagrid.SelectedIndex);

该程序不会删除正确的索引。例如,我的第一个 csv 是 [a,c,c,d],第二个 csv 是 [z,a,d,k] 排序后的表格包含并显示 [a,a,c,c,d,d,k ,z] 我想要的,但是当我单击行“z”时,它不会删除“z”行,而是删除“k”。换句话说,索引是相同的,但行的位置已更改,删除函数现在根据排序前的最后一个索引删除。我已经尝试刷新数据网格并重新加载数据网格但没有成功,请帮助我谢谢。

4

1 回答 1

2

在对网格进行排序操作后,DataGrid 中的 SelectedIndex 将不会指向与源中的索引相同的项目。尝试使用 SelectedItem 和 Remove(item) 而不是 RemoveAt(index)。

于 2012-08-21T07:36:43.283 回答