Событие DataGridView SortCompare не запускается - PullRequest
4 голосов
/ 01 сентября 2009

Использование 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

Ответы [ 2 ]

7 голосов
/ 02 сентября 2009

Установите режим сортировки каждого столбца на «Автоматический», а не «Программный»

Также из этого документа :

Событие SortCompare не возникает, когда свойство DataSource имеет значение установить или когда значение свойства VirtualMode равно true.

3 голосов
/ 03 сентября 2009

Когда DataGridView привязан к данным, источник данных также может быть отсортирован.

Некоторые источники данных имеют встроенную поддержку сортировки. Ваш источник данных реализует свойства и методы сортировки IBindingList или IBindingListView для сортировки источника данных различными способами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...