Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 对datagrid排序后,索引不会更改_.net_Wpf_Wpfdatagrid - Fatal编程技术网

.net 对datagrid排序后,索引不会更改

.net 对datagrid排序后,索引不会更改,.net,wpf,wpfdatagrid,.net,Wpf,Wpfdatagrid,我有个问题,请帮助我: 我在WPF中有一个名为contacts\u datagrid的数据网格。它从带有2个字段(姓名、电话号码)的CSV文件加载数据。在运行我的应用程序时,它将从此csv文件加载数据。我设置了一个导入函数,该函数导入另一个csv文件,并使用以下代码将其数据附加到第一个csv文件的按钮: foreach (DataRow drow in second_csv_file.Rows) { First_csv_file.Rows.Add(drow.ItemArray);

我有个问题,请帮助我: 我在WPF中有一个名为contacts\u 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,d,k,z],但当我单击行“z”时,它不会删除“z”行,而是删除“k”。换句话说,索引是相同的,但行的位置已经更改,删除函数现在根据排序前的最后一个索引进行删除。我已经尝试刷新datagrid并重新加载datagrid,但没有成功,请帮助我,谢谢

在网格上执行排序操作后,DataGrid中的SelectedIndex将不会指向与源中的索引相同的项。
尝试改用SelectedItem,用Remove(item)代替RemoveAt(index)。

我认为问题出在您的表变量中,尝试使用断点在运行时探索它,我应该如何做,因为它需要定义一个datarow,一旦定义并插入到foreach循环中,就会发生错误。@HosseinAmini如果您将两个csv文件中的行添加到ObservableCollection,例如,您可以将DataGrid的ItemsSource设置为该集合,然后使用Remove()在集合上删除所选项目。