Использование VS2008, C # и .NET 3.5
Я использую элементы управления DataGridView с привязкой к данным для отображения табличных данных, считанных из веб-службы. В некоторых случаях существует числовой столбец, который необходимо отсортировать. Я попробовал несколько различных способов заставить это работать, но колонка все еще заканчивается сортировкой по алфавиту (то есть, 1, 10, 2, 3 вместо 1, 2, 3, 10).
Установка типа данных столбца для int не работает для элементов управления с привязкой к данным, поэтому единственный реальный способ сделать это - предоставить некоторую настраиваемую логику сортировки.
Многие люди предлагают подключиться к событию SortCompare, чтобы обеспечить собственную логику сортировки, но по какой-то причине код события никогда не запускается - я могу поставить точку останова в обработчике, и она никогда не достигнет этого. Я добавляю обработчик событий через GUI, поэтому обработчик добавляется в элемент управления VS, а не вручную.
Вот код обработчика события, поднятый где-то здесь:
private void uxLicensedSoftwareDataGridView_SortCompare( object sender,
DataGridViewSortCompareEventArgs e )
{
int intValue1, intValue2;
if ( !Int32.TryParse( e.CellValue1.ToString(), out intValue1 ) )
return;
if ( !Int32.TryParse( e.CellValue2.ToString(), out intValue2 ) )
return;
if ( intValue1 == intValue2 )
e.SortResult = 0;
else if ( intValue1 < intValue2 )
e.SortResult = -1;
else
e.SortResult = 1;
e.Handled = true;
}
Если это когда-нибудь произойдет, оно будет делать именно то, что я хочу. Чего мне не хватать?
Спасибо за указание на (надеюсь) очевидное ...
Dave