| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Выделение записи в DataGridView |
| Автор: EuGenius_Krivbass 9.4.2008, 16:31 |
| DataGridView работает таким образом, что в него загружаются только необходимые в данный момент записи из DataTable. Рядом с DataGridView есть Scroll. По скролу определяется, какой диапазон вытягивать для DatagridView из DataTable. При нажатии на Up в верхней строке DataGridView - содержимое перегружается со смещением на одну позицию вверх, т.е. если была верхняя запись с индексом 15, то станет 14. Необходимо оставлять выделение строки по отношению к DataGridView (была выделена первая - первая и остается, была 14 - 14 и остается), хотя содержимое строк меняется. А теперь проблема: по кнопке Up - перегружается и выделенная строка остается на своем месте по скроллу как вверх , так и вниз - то же самое (все хорошо) по кнопке Down, если курсор на самой нижней строке - DataGridView перегружается, но выделенной строкой становаится строка с индексом в гриде 1! (вторая сверху) Как это последнее выделение сделать для нижней строки? Боков, типа где-то случайно назначил в приложении "1" нету. после загрузки грида новым содержимым происходит переназначение выделенной строки. количество строк - всегда одинаковое - зависит от размера самого грида. В событии OnPaint - четко видно, что грид поставил выделенной строкой - с индексом 1 |
| Автор: vponomarov 9.4.2008, 17:23 |
| EuGenius_Krivbass, а если попробовать ПЕРЕД скролом запоминать индекс выделенной строки, потом загружать новую инфу и выделять строку с индексом который мы запомнили? |
| Автор: EuGenius_Krivbass 9.4.2008, 17:47 |
| Я именно так и делаю, но после установки мною необходимого индекса, DataGridView сам меняет его на "1" |
| Автор: EuGenius_Krivbass 9.4.2008, 18:28 | ||||
| Это просто УЖАС!!!!! так не работает(для кнопки KeyDown):
а так все прекрасно работает, [censored 6]:
|
| Автор: IApple 10.4.2008, 09:27 |
| 1) Вообще страные вопросы у Вас... Не пойму зачем что-либо высчитывать при нажатии Down, если по условию (после новой загрузки) необходимо просто выделить ПОСЛЕДНЮЮ из загруженых в грид? 2) 1 зашита не в вашем коде, а в гриде - ваша "перезагрузка" даных вынуждает его сбросить Selected в 0, после чего обрабатывается Down увеличением этого нуля на 1... |
| Автор: EuGenius_Krivbass 11.4.2008, 15:22 |
как раз последняя и выделяется после того, как загружен грид, но выделение сбрасывается на 1(согласен с тем, что может быть реакция на Down) |