У меня была и эта проблема сегодня. У меня есть DataGridView
, который регулярно меняет свои DataSource
(a DataTable
). Я был в состоянии окончательно удалить то, что указанный пользователем, когда пользователь нажал на столбец-заголовок, используя следующий код:
If dgv.SortedColumn IsNot Nothing AndAlso dgv.DataSource IsNot Nothing Then
Dim dt_Sender As DataTable = DirectCast(dgv.DataSource, DataTable)
dt_Sender.DefaultView.Sort = dt_Sender.Columns(0).ColumnName & " ASC"
End If
Эти функции, потому что у меня есть скрытый столбец в моей DataGridView
, что всегда находится в позиции столбца индекса 0. Это целочисленный первичный ключ для базовых данных, которые сортируются по нагрузке данных.
* Возможно, вам потребуется указать свой индексный столбец в DataTable
, если вы еще этого не сделали (например, dt_Sender.Columns(0).ColumnName = "colIndex"
).
* Если вы используете BindingSource
объект в качестве посредника между вашим DataGridView
и вашим DataTable
(как и многие люди, кажется, делают), то вы должны будете гнездо вашего DirectCast
соответственно во второй строке (т.е. Dim dt_Sender As DataTable = DirectCast(dgv.DataSource, DataTable)
изменялось в что-то вроде: Dim dt_Sender As DataTable = DirectCast(DirectCast(dgv.DataSource, BindingSource), DataTable)
).
* Кроме того, если ваш DataTable
заполняется запросом SQL Server, который не имеет целочисленного первичного ключа (возможно, GUID?), Тогда вы можете изменить исходный запрос, чтобы включить новый номер строки, а затем скройте новый столбец в DataGridView
. Например.:
SELECT Row_Number() OVER (ORDER BY (SELECT '')) AS RowNumber, Column1, Column2, Column3
FROM SourceTable
Надеюсь, это решение будет полезно для кого-то еще в будущем.
Является ли это сетью, привязанной к данным? –
Да. Но я даже переключаю DataSources. Я вызываю DataSource = null и Columns.Clear перед коммутатором. – BuddyJoe
Я хотел бы иметь возможность разрешить обновление, но сохранить порядок сортировки. Но если пользователь переключает то, на что они хотят смотреть (через TreeView), я бы хотел, чтобы порядок сортировки уходил. Это ошибка? Я пробовал несколько вещей, я не могу понять, как это уйти. – BuddyJoe