Есть few ways for custom sorting in the DataGridView
Control
Обычно самый простой и вообще обрабатывать DataGridView.SortCompare
событие:
Private Sub DataGridView1_SortCompare(sender As Object, e As DataGridViewSortCompareEventArgs) Handles DataGridView1.SortCompare
If e.Column.Index <> 0 Then Return ' custom sort only for the first column
e.SortResult = Len(e.CellValue1).CompareTo(Len(e.CellValue2)) ' compare by string length
e.Handled = e.SortResult <> 0 ' to use the default comparison if same length
End Sub
Другой вариант передать IComparer
методу DataGridView.Sort
(.Create
потребности .NET 4.5):
DataGridView1.Sort(Comparer(Of DataGridViewRow).Create(
Function(r1, r2)
Dim o1 = r1.Cells(0).Value, o2 = r2.Cells(0).Value
Dim i = Len(o1).CompareTo(Len(o2))
If i = 0 Then i = o1.ToString.CompareTo(o2)
Return i
End Function))
Вот как струны сортируются. «9» имеет более высокое значение, чем «1000»; он сортирует по значению ASCII символов. Пожалуйста, прочитайте [Ask] и возьмите [Tour]. – Plutonix
Так как я могу это исправить? –
Пожалуйста, прочитайте [Ask] и возьмите [Tour]. Вам нужно приложить некоторые усилия, чтобы исправить проблемы с pwn и задать реальный вопрос. Если числовая часть не доступна сама по себе, вам необходимо ее изолировать или использовать Natural Sort. – Plutonix