我有问题请帮帮我: 我在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);
程序dos不删除正确的索引。例如,我的第一个csv是[a,c,c,d],第二个csv是[z,a,d,k]排序后的表包含并显示[a,a,c,c,d,d,k ,z]我想要但是当我点击行“z”时它不会删除“z”行而是删除“k”。换句话说,索引是相同的但行的位置已经改变,删除功能现在根据排序之前的最后索引删除。我试过刷新datagrid并重新加载datagrid但没有成功,请帮助我谢谢。
答案 0 :(得分:1)
在对网格执行排序操作后,DataGrid中的SelectedIndex将不会指向与源中的索引相同的项目。 尝试使用SelectedItem代替Remove(item)而不是RemoveAt(index)。