![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| asper |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 10.8.2005 Репутация: нет Всего: нет |
Тема "Сортировка в datagrid - как отловить" - уже знакома.
Сопутствующий теме вопрос: как после сортировки (производится нажатием на заголовке столбца) вернуться в datagrid, причем желательно на ту же строку, на которой находился до сортировки и сделать эту строку выбранной. Вот код, где делается попытка встать хотя бы на первую запись, но это происходит только после того, как сделаешь по крайней мере скроллинг datagrid.
|
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 5 Всего: 186 |
при navigate запоминаешь тек.запись, а при сортировке направляешься на неё..
в чём трабла? |
|||
|
||||
| asper |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 10.8.2005 Репутация: нет Всего: нет |
хм... не понимаю...
а можно в коде? |
|||
|
||||
| Papirus |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 298 Регистрация: 19.4.2005 Где: Санкт-Петербург Репутация: -1 Всего: 1 |
|
|||
|
||||
| Papirus |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 298 Регистрация: 19.4.2005 Где: Санкт-Петербург Репутация: -1 Всего: 1 |
или, если надо на текущей ползиции
Это навскидку. Вроде еще проще можно. Извини не искал. |
|||
|
||||
| asper |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 10.8.2005 Репутация: нет Всего: нет |
Вариант первый - с возвращением на первую строку - срабатывает, НО только в том случае, если хотя бы пошевелишь скроллинг таблицы, без этого - все глухо, строка не выделяется.
Вариант второй также реагирует только на скроллинг, но при этом выбирается не та запись, которая была выделена до сортировки, а та ПОЗИЦИЯ, на которой стояла запись до сортировки. Как быть? |
|||
|
||||
| Papirus |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 298 Регистрация: 19.4.2005 Где: Санкт-Петербург Репутация: -1 Всего: 1 |
1. Извини насчет скроллинга. Так и не понял какой скроллинг таблицы требуется шевелить. Специально выбирал последнюю запись в гриде, сортировал и в первом варианте получал выделенную первую строку на экране без дополнительных телодвижений.
2. Опять же извини. Не понял, что требуется не на ту же строку грида, а на ту же ЗАПИСЬ (смутило еще, что надо почему то возвращаться в грид). В этом случае, ИМХО, только запоминать в переменной какой-нть ID записи, а после сортировки искать ее в гриде и выделять. |
|||
|
||||
| asper |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 10.8.2005 Репутация: нет Всего: нет |
1.У меня табличка достаточно широкая, поэтому она имеет полосу прокрутки по горизонтали.
Я делаю сортировку по любому столбцу и в результате datagrid как будто деактивируется, то есть фокус к нему не возвращается (пробую сделать программную фокусировку - не помогает). НО если я двигаю скроллинг, то datagrid активизируется и первая запись выделяется в нем как выбранная. 2. Понятно, подумаю, вот только вернуться бы в datagrid |
|||
|
||||
| Papirus |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 298 Регистрация: 19.4.2005 Где: Санкт-Петербург Репутация: -1 Всего: 1 |
Для поиска в гриде можно использовать вычисляемый цикл
Тогда все само и получиться. |
||||
|
|||||
| asper |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 10.8.2005 Репутация: нет Всего: нет |
Если ставить этот код в обработку нажатия на header, то мне не понятно, что же сортируется - какую составляющую не посмотришь - все имеют старую сортировку...
Ничего не понимаю |
|||
|
||||
| asper |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 10.8.2005 Репутация: нет Всего: нет |
Для того, чтобы вернуться на ту же строку (по значениям, содержанию), на которой находился курсор в datagrid до сортировки, пришлось реализовать такой код:
При отладке дебаггером на строке DataGrid1.Select(iPos) выдается сообщение: "there is no source code available for the current location". В datagrid, пока не пошевелишь прокрутку таблицы, курсор в нужную позицию не встает - он вообще отсутствует, т.е. теряется при сортировке. Не помогает НИЧЕГО Помогите, плз, советом, что делать.... |
|||
|
||||
| Papirus |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 298 Регистрация: 19.4.2005 Где: Санкт-Петербург Репутация: -1 Всего: 1 |
А что не работает в приведенном мной примере?
|
|||
|
||||
| asper |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 10.8.2005 Репутация: нет Всего: нет |
На нужную позицию вернуться не получается, DataGrid не активизируется (курсор никуда не ставится) Кстати, для возвращения курсора пришлось имитировать нажатие esc... |
|||
|
||||
| Papirus |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 298 Регистрация: 19.4.2005 Где: Санкт-Петербург Репутация: -1 Всего: 1 |
А цикл-то отрабатывает? Запись находится? |
|||
|
||||
| asper |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 10.8.2005 Репутация: нет Всего: нет |
Нет, запись найти не получается - я вообще не совсем понимаю, как работает этот цикл. А если была сортировка?
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |