Member 13576502 Ответов: 1

Быстрое короткое замыкание в datagridview VB net 2010


Может ли кто-нибудь помочь мне реализовать алгоритм быстрой сортировки в datagridview?


Я хочу отсортировать столбец раздела "id"

id имя адрес
=======================================
Джони 11 кл
290 lkvan на JS
829 веселый Ле
91 laun sw


и выполните его с помощью кнопки





спасибо

Что я уже пробовал:

Я использую такой код, но не сортирую значения 11 и 91

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click

       DataGridView1.Sort(DataGridView1.Columns(0),
       System.ComponentModel.ListSortDirection.Ascending)

End Sub

Patrice T

- Я использую такой код, но не сортирую значения 11 и 91.
попробуйте составить предложения.

Richard Deeming

Предположим, что вы определили свой столбец как строку, а не число.

Несколько предложений здесь: Сортировка численно в столбце DataGridViewTextBoxColumn[^]

Sinisa Hajnal

Возврат отсортированных данных из источника данных?

Member 13576502

да

1 Ответов

Рейтинг:
1

Maciej Los

Если ваш DataGridView свойство DataSource[^] связан с DataTable, вы можете сортировать данные таким образом:

Dim dt As DataTable = DirectCast(DataGridView1.DataSource, DataTable)
'when [id] field is type of integer
'Dim result = dt.AsEnumerable().OrderBy(Function(x) x.Field(Of Integer)("id"))
	
'when [id] field is type of string
Dim result = dt.AsEnumerable().OrderBy(Function(x) Convert.ToInt32(x.Field(Of String)("id")))

dt = result.CopyToDataTable()
DataGridView1.DataSource = dt


Для получения более подробной информации, пожалуйста, смотрите:
Сортировка и фильтрация данных | Microsoft Docs[^]
Как привязать данные к элементу управления Windows Forms DataGridView | Microsoft Docs[^]
Оператор DirectCast (Visual Basic) | Microsoft Docs[^]

В случае если ваш DataGridView не привязан ни к одному источнику данных, вы можете сортировать DataGridView строки через запрос Linq.
Dim sortedDGVRows = DataGridView1.Rows. _
    OfType(Of DataGridViewRow)(). _
    OrderBy(Function(r) r.Cells("id"))
DataGridView1.Rows = sortedDgvRows