|
|
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Добрый день всем гуру. Продолжаю свою эпопею с юзанием GridMode режима у грида. Совершенно запланировано столкнулся с проблемой позиционирования на гриде после перечитки запроса. У меня реализован механизм выполнения запроса (сам запрос собирается динамически) с учетом пользовательских фильтров и сортировок. Все работает нормально, но есть нюансы. Один из них - после определенных действий вернуться на ту же запись в TableView. Заказчик хочет (и это вполне нормальное желание), чтобы после совершения действия, если набор данных не менялся, автоматом переходить на запись, с которой совершалось действие. И не просто переходить (в этом как раз проблемы нету), но чтобы на сетке сама запись оставалась на том же месте. Например, видимая часть TableView содержит 27 строк. Я стою на 20-й и хочу после совершения операции (которая вызывает перевыполнение запроса без изменений набора данных) снова видеть выделенной эту же строку на той же позиции в TableView. Вся проблема в том, что включен GridMode и параметры TopRowIndex и FocusedRowIndex зачастую отображают неверную информацию. Почитал на форуме, но решения похожих проблем не нашел. Может у кого была такая же проблема, подскажите как выкрутиться из этой ситуации. Заранее благодарю за дельные советы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 11:14 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов Юрий, для начала надобно свою же собственную тему "закрыть", написав, чем всё закончилось и какое было решение: http://www.sql.ru/forum/1304358/sortirovka-i-gridmode ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 11:20 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов Юрий...столкнулся с проблемой позиционирования на гриде после перечитки запроса. ...вернуться на ту же запись в TableView. Заказчик хочет..., чтобы после совершения действия, если набор данных не менялся, автоматом переходить на запись, с которой совершалось действие... Не выполнять "перечитку" запроса, если набор данных не менялся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 11:31 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
И пора бы уж познакомиться, что такое beginupdate/endupdate у гридов/трилистов девовских. Как раз для обновлений датасетов сделано, чтобы ничего вручную не надо было восстанавливать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 11:35 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
1. Загружайте запрос в какой-нибудь мемори-датасет (TdxMemData), к нему и привязан Грид. (можно использовать и не DBView) 2. После редактирования записи отправляете данные на сервер 3. Если сервер вернул ошибку, то отменяете редактирование. И не нужно перечитывать данные и менять положение курсора в Гриде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:23 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
JaDiЛеонов Юрий, для начала надобно свою же собственную тему "закрыть", написав, чем всё закончилось и какое было решение: http://www.sql.ru/forum/1304358/sortirovka-i-gridmode Здесь решение еще не найдено, параллельно веду разработку. Поэтому писать пока нечего и закрывать соответственно рано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:26 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Фэйтл ЭраЛеонов Юрий...столкнулся с проблемой позиционирования на гриде после перечитки запроса. ...вернуться на ту же запись в TableView. Заказчик хочет..., чтобы после совершения действия, если набор данных не менялся, автоматом переходить на запись, с которой совершалось действие... Не выполнять "перечитку" запроса, если набор данных не менялся. Может неправильно выразился. Данные меняются. Не меняется порядок строк и количество их в наборе. Изменения могут проходить по полям, по которым нет сортировки и фильтрации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:28 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
DimaBr1. Загружайте запрос в какой-нибудь мемори-датасет (TdxMemData), к нему и привязан Грид. (можно использовать и не DBView) 2. После редактирования записи отправляете данные на сервер 3. Если сервер вернул ошибку, то отменяете редактирование. И не нужно перечитывать данные и менять положение курсора в Гриде. Это немного не то, при ошибке перечитка не происходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:29 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Зачем вам перечитка, если данные не изменились ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:35 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
DimaBr, Я выше написал, неправильно выразился. Данные меняются, но по полям, которые не участвуют в сортировке и фильтрации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:39 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Для наглядности вот 2 изображения. На первом состояние до выполнения действия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:50 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
На втором - после совершения действия (проставили галочку) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:51 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
У меня возможны несколько вариантов: искомая запись улетает на самый верх; отображает правильно, но фокус становится на предпоследнюю запись; фокус может стоять вообще на неизвестной записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 12:55 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Если вы не будите перечитывать данные, то всё останется на месте (если фильтры удовлетворяют условию) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 13:02 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов Юрий, зачем ты перечитываешь все данные? Ты что-то меняешь, кроме конкретной записи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 13:05 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
TobVisibleIndex нужен или т.п. -- точно что-то есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 13:15 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
DimaBrЕсли вы не будите перечитывать данные, то всё останется на месте (если фильтры удовлетворяют условию) Мне нужно перечитать эти данные, иначе как отобразятся изменения по действию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 13:54 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
JaDi-guestTobVisibleIndex нужен или т.п. -- точно что-то есть. Оно то есть, только совместно с GridMode=True не пашет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 13:55 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Фэйтл ЭраЛеонов Юрий, зачем ты перечитываешь все данные? Ты что-то меняешь, кроме конкретной записи? Нет, кроме конкретной не меняю, но изменения показать же нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 13:57 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов ЮрийМне нужно перечитать эти данные, иначе как отобразятся изменения по действию Вы изменяете строку датасета в памяти и отсылаете запрос на сервер. Если сервер вернул Добро, то заканчивается редактирование клиентского датасета. Изменяется всего одна строчка и никакие данные перечитывать не нужно. Если сервер вернул Ошибку, то отменяется редактирование и опять же данные перечитывать не нужно. Вы вообще как редактируете данные ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 14:07 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
DimaBrЛеонов ЮрийМне нужно перечитать эти данные, иначе как отобразятся изменения по действию Вы изменяете строку датасета в памяти и отсылаете запрос на сервер. Если сервер вернул Добро, то заканчивается редактирование клиентского датасета. Изменяется всего одна строчка и никакие данные перечитывать не нужно. Если сервер вернул Ошибку, то отменяется редактирование и опять же данные перечитывать не нужно. Вы вообще как редактируете данные ? Редактирование осуществляется хранимой процедурой. Идет вызов, после которого обновление. На картинках частный случай, не стоит особо привязываться к ним ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 14:19 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов Юрий, А нельзя одну запись перечитать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 14:24 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Т.е. никто не рассматривает обычный DataSet.Locate('id', id, []) как вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 14:31 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Virtual StudentТ.е. никто не рассматривает обычный DataSet.Locate('id', id, []) как вариант? на второй картинке действие локейта. Они с первой отличаются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 14:41 |
|
||
|
Позиционирование при перечитывании запроса и GridMode
|
|||
|---|---|---|---|
|
#18+
Леонов ЮрийФэйтл ЭраЛеонов Юрий, зачем ты перечитываешь все данные? Ты что-то меняешь, кроме конкретной записи? Нет, кроме конкретной не меняю, но изменения показать же нужно Если остальные записи не меняешь - зачем перечитываешь весь набор данных??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2018, 14:42 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=90&tid=2040132]: |
0ms |
get settings: |
12ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
70ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 257ms |
| total: | 459ms |

| 0 / 0 |
