Опубликовать MouseUp переделку датагрида! - PullRequest
1 голос
/ 05 марта 2010

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

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

Это работает абсолютно нормально!

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

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

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

1 Ответ

0 голосов
/ 05 марта 2010

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

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

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

...