Если я правильно понимаю ваш вопрос, вы пытаетесь сопоставить индексы строк вашего DataTable с индексами порядка сортировки вашего DataGridView. В приведенном ниже примере имя столбца сортировки - «index».
'Применить порядок сортировки к виду сетки
table.DefaultView.Sort = "index ASC"
'Назначить источник данных DataGridView для DataTable
gridview.DataSource = table.DefaultView
'Изменить значение индекса DataTable, что приведет к
DataGridView, чтобы прибегнуть к представлению. В этом случае поменяйте местами строки 0 и 1.
table.Rows (0) .Item ("index") = 1
table.Rows (1) .Item ("index") = 0
Теперь порядок строк в таблице не изменился, только gridview сортирует и отображает новый порядок строк.
Единственный способ, который я знаю, хотя это и не очень хорошее решение, заключается в следующем:
'Переназначить DataTable для его собственного отсортированного DefaultView
table = table.DefaultView.ToTable ()
'Повторно применить порядок сортировки к виду сетки
table.DefaultView.Sort = "index ASC"
'Переназначить источник данных DataGridView в DataTable
gridview.DataSource = table.DefaultView
Теперь и таблица и сетка имеют одинаковый порядок строк.
Пожалуйста, опубликуйте лучшее решение, если вы знаете его. Надеюсь, это поможет.