Разместите MouseUp переделку datagrid!

У меня есть приложение .NET CF с формой, содержащей сетку данных, которую я привязал к BindingList, используя решение, полученное в основном из этой статьи: http://msdn.microsoft.com/en-us/library/aa480736.aspx

Я подключил его так, чтобы при щелчке заголовка столбца я получал информацию HitTest и проверял тип. Если Type - ColumnHeader, то я инициирую сортировку в базовом BindingList (используя код, аналогичный примеру в приведенной выше ссылке), что, в свою очередь, сортирует DataGrid в соответствии со свойством T, которое я щелкнул. Например. Описание

Это прекрасно работает!

Проблема возникает, когда я теперь щелкаю по своей сетке данных - скажем, у меня есть две строки, после выполнения сортировки ни одна строка не выбрана. Я щелкаю ячейку в строке 1, и у меня есть код, который выбирает всю строку - эта операция выполняется, и все в порядке. Когда я теперь нажимаю строку 2, строка 2 выбирается, и все в порядке, сетка по-прежнему применяет мою сортировку. Если я сейчас снова щелкну строку 1, моя сортировка изменится на противоположную, но, что очень важно, метод «ApplySort» на самом деле не вызывается. Так что же происходит? Это происходит только тогда, когда я нажимаю строку 1, две строки в сетке фактически меняются местами. При выборе строки 2 этого не происходит.

После отладки я вижу, что срабатывает mousedown (в которое я вставил оператор return;), а затем срабатывает MouseUp, который выполняет HitTest и вызывает ApplySort, если был нажат заголовок столбца, чего в данном случае нет. Я заметил, что изменение сортировки происходит * ПОСЛЕ того, как элемент управления покинул событие MouseUp - так что что-то где-то, кажется, меняет состояние моей сетки после завершения MouseDown / MouseUp.

Есть идеи, какое событие / действие может мешать моей сетке? Я в основном хочу знать, могу ли я подавить что-либо и все остальное после того, как я вызвал свой ApplySort.


person SpaceBison    schedule 05.03.2010    source источник


Ответы (1)


Я не ожидаю много ответов на этот вопрос ... но я только что заметил, что такое поведение возникает ТОЛЬКО, когда столбец для сортировки содержит значения, которые идентичны друг другу.

Столбцы, в которых данные разные, поведения не происходит.

Так что я полагаю, что это вполне могло быть сделано намеренно - я должен сделать реализацию менее общей и сортировать по определенному свойству id, которое содержит отдельные значения, а не сортировать столбцы динамически в зависимости от того, что щелкнул пользователь - поскольку это вполне может иметь побочный эффект, который я описал.

person SpaceBison    schedule 05.03.2010