2016-03-29 3 views
1

Я работаю над проектом, конвертирующим приложения VB6 в VB.NET. Это на первом этапе, прошедшее преобразование через Visual Basic 2008. Я заменяю FlexGrids на DataGridViews и сталкиваюсь с некоторыми проблемами, с которыми мне трудно найти ответ.DataGridView сортировать программно, чувствительно к регистру

Одна из проблем заключается в том, что сортировка по FlexGrid имела множество опций. Единственными параметрами, которые я вижу в DataGridView, являются:

System.ComponentModel.ListSortDirection.Ascending 
System.ComponentModel.ListSortDirection.Descending 

Мне нужна чувствительная к регистру сортировка. Я везде искал и не нашел того, что мне нужно. Было даже сложно найти код выше. Любая помощь очень ценится.

Редактировать: сетка заполняется программно.

+1

Где данные? Был ли он добавлен вручную или находится в источнике данных? – Plutonix

+0

К сожалению, он добавляется вручную. Я отредактирую вопрос. – pixelmeow

+1

Вы говорите о сортировке данных при загрузке или изменении критериев сортировки при нажатии на заголовок столбца? – cdkMoose

ответ

3

Если вы вручную заполняете сетку, то ListSortDirection.Ascending должно быть всем, что вам нужно.

Например, учитывая следующий список Example пунктов (в любой заказ):

Dim examples = New List(Of Example)() From { _ 
    New Example() With { _ 
     Key .Bar = "Abcd", _ 
     Key .Foo = "3" _ 
    }, _ 
    New Example() With { _ 
     Key .Bar = "ABcd", _ 
     Key .Foo = "4" _ 
    }, _ 
    New Example() With { _ 
     Key .Bar = "aBcd", _ 
     Key .Foo = "2" _ 
    }, _ 
    New Example() With { _ 
     Key .Bar = "abcd", _ 
     Key .Foo = "1" _ 
    } _ 
} 

С следующей установкой:

Dim col1 As New DataGridViewTextBoxColumn() 
Dim col2 As New DataGridViewTextBoxColumn() 

col1.Name = "Foo" 
col2.Name = "Bar" 

col1.SortMode = DataGridViewColumnSortMode.NotSortable 
col2.SortMode = DataGridViewColumnSortMode.Programmatic 

Me.dataGridView1.Columns.Add(col1) 
Me.dataGridView1.Columns.Add(col2) 

For Each example As Example In examples 
    Me.dataGridView1.Rows.Add(example.Foo, example.Bar) 
Next 

Me.dataGridView1.Sort(col2, ListSortDirection.Ascending) 

Вы всегда должны видеть результаты как:

DataGridView ascended sort for "Bar" column

+0

Спасибо, я не использовал его правильно. Это делает трюк. – pixelmeow

Смежные вопросы