Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
 Позиционирование при перечитывании запроса и GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
Добрый день всем гуру.

Продолжаю свою эпопею с юзанием GridMode режима у грида.
Совершенно запланировано столкнулся с проблемой позиционирования на гриде после перечитки запроса.
У меня реализован механизм выполнения запроса (сам запрос собирается динамически) с учетом пользовательских фильтров и сортировок. Все работает нормально, но есть нюансы. Один из них - после определенных действий вернуться на ту же запись в TableView. Заказчик хочет (и это вполне нормальное желание), чтобы после совершения действия, если набор данных не менялся, автоматом переходить на запись, с которой совершалось действие. И не просто переходить (в этом как раз проблемы нету), но чтобы на сетке сама запись оставалась на том же месте. Например, видимая часть TableView содержит 27 строк. Я стою на 20-й и хочу после совершения операции (которая вызывает перевыполнение запроса без изменений набора данных) снова видеть выделенной эту же строку на той же позиции в TableView. Вся проблема в том, что включен GridMode и параметры TopRowIndex и FocusedRowIndex зачастую отображают неверную информацию.
Почитал на форуме, но решения похожих проблем не нашел. Может у кого была такая же проблема, подскажите как выкрутиться из этой ситуации.
Заранее благодарю за дельные советы
9 ноя 18, 11:14    [21729136]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3862
Леонов Юрий,

для начала надобно свою же собственную тему "закрыть", написав, чем всё закончилось и какое было решение:
http://www.sql.ru/forum/1304358/sortirovka-i-gridmode
9 ноя 18, 11:20    [21729149]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
Фэйтл Эра
Member

Откуда:
Сообщений: 97
Леонов Юрий
...столкнулся с проблемой позиционирования на гриде после перечитки запроса.
...вернуться на ту же запись в TableView. Заказчик хочет..., чтобы после совершения действия, если набор данных не менялся, автоматом переходить на запись, с которой совершалось действие...


Не выполнять "перечитку" запроса, если набор данных не менялся.
9 ноя 18, 11:31    [21729169]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3862
И пора бы уж познакомиться, что такое beginupdate/endupdate у гридов/трилистов девовских. Как раз для обновлений датасетов сделано, чтобы ничего вручную не надо было восстанавливать.
9 ноя 18, 11:35    [21729174]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
DimaBr
Member

Откуда:
Сообщений: 10756
1. Загружайте запрос в какой-нибудь мемори-датасет (TdxMemData), к нему и привязан Грид. (можно использовать и не DBView)
2. После редактирования записи отправляете данные на сервер
3. Если сервер вернул ошибку, то отменяете редактирование.
И не нужно перечитывать данные и менять положение курсора в Гриде.
9 ноя 18, 12:23    [21729269]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
JaDi
Леонов Юрий,

для начала надобно свою же собственную тему "закрыть", написав, чем всё закончилось и какое было решение:
http://www.sql.ru/forum/1304358/sortirovka-i-gridmode


Здесь решение еще не найдено, параллельно веду разработку. Поэтому писать пока нечего и закрывать соответственно рано
9 ноя 18, 12:26    [21729273]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
Фэйтл Эра
Леонов Юрий
...столкнулся с проблемой позиционирования на гриде после перечитки запроса.
...вернуться на ту же запись в TableView. Заказчик хочет..., чтобы после совершения действия, если набор данных не менялся, автоматом переходить на запись, с которой совершалось действие...


Не выполнять "перечитку" запроса, если набор данных не менялся.


Может неправильно выразился. Данные меняются. Не меняется порядок строк и количество их в наборе. Изменения могут проходить по полям, по которым нет сортировки и фильтрации
9 ноя 18, 12:28    [21729281]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
DimaBr
1. Загружайте запрос в какой-нибудь мемори-датасет (TdxMemData), к нему и привязан Грид. (можно использовать и не DBView)
2. После редактирования записи отправляете данные на сервер
3. Если сервер вернул ошибку, то отменяете редактирование.
И не нужно перечитывать данные и менять положение курсора в Гриде.


Это немного не то, при ошибке перечитка не происходит
9 ноя 18, 12:29    [21729283]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
DimaBr
Member

Откуда:
Сообщений: 10756
Зачем вам перечитка, если данные не изменились
9 ноя 18, 12:35    [21729296]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
DimaBr,

Я выше написал, неправильно выразился. Данные меняются, но по полям, которые не участвуют в сортировке и фильтрации
9 ноя 18, 12:39    [21729306]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
Для наглядности вот 2 изображения. На первом состояние до выполнения действия

К сообщению приложен файл. Размер - 29Kb
9 ноя 18, 12:50    [21729321]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
На втором - после совершения действия (проставили галочку)

К сообщению приложен файл. Размер - 29Kb
9 ноя 18, 12:51    [21729323]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
У меня возможны несколько вариантов:
искомая запись улетает на самый верх;
отображает правильно, но фокус становится на предпоследнюю запись;
фокус может стоять вообще на неизвестной записи.
9 ноя 18, 12:55    [21729332]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
DimaBr
Member

Откуда:
Сообщений: 10756
Если вы не будите перечитывать данные, то всё останется на месте (если фильтры удовлетворяют условию)
9 ноя 18, 13:02    [21729347]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
Фэйтл Эра
Member

Откуда:
Сообщений: 97
Леонов Юрий,

зачем ты перечитываешь все данные? Ты что-то меняешь, кроме конкретной записи?
9 ноя 18, 13:05    [21729354]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
JaDi-guest
Guest
TobVisibleIndex нужен или т.п. -- точно что-то есть.
9 ноя 18, 13:15    [21729380]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
DimaBr
Если вы не будите перечитывать данные, то всё останется на месте (если фильтры удовлетворяют условию)

Мне нужно перечитать эти данные, иначе как отобразятся изменения по действию
9 ноя 18, 13:54    [21729506]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
JaDi-guest
TobVisibleIndex нужен или т.п. -- точно что-то есть.

Оно то есть, только совместно с GridMode=True не пашет
9 ноя 18, 13:55    [21729510]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
Фэйтл Эра
Леонов Юрий,

зачем ты перечитываешь все данные? Ты что-то меняешь, кроме конкретной записи?

Нет, кроме конкретной не меняю, но изменения показать же нужно
9 ноя 18, 13:57    [21729517]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
DimaBr
Member

Откуда:
Сообщений: 10756
Леонов Юрий
Мне нужно перечитать эти данные, иначе как отобразятся изменения по действию

Вы изменяете строку датасета в памяти и отсылаете запрос на сервер. Если сервер вернул Добро, то заканчивается редактирование клиентского датасета. Изменяется всего одна строчка и никакие данные перечитывать не нужно. Если сервер вернул Ошибку, то отменяется редактирование и опять же данные перечитывать не нужно.

Вы вообще как редактируете данные ?
9 ноя 18, 14:07    [21729543]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
DimaBr
Леонов Юрий
Мне нужно перечитать эти данные, иначе как отобразятся изменения по действию

Вы изменяете строку датасета в памяти и отсылаете запрос на сервер. Если сервер вернул Добро, то заканчивается редактирование клиентского датасета. Изменяется всего одна строчка и никакие данные перечитывать не нужно. Если сервер вернул Ошибку, то отменяется редактирование и опять же данные перечитывать не нужно.

Вы вообще как редактируете данные ?

Редактирование осуществляется хранимой процедурой. Идет вызов, после которого обновление. На картинках частный случай, не стоит особо привязываться к ним
9 ноя 18, 14:19    [21729568]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
zinpub
Member

Откуда:
Сообщений: 273
Леонов Юрий,

А нельзя одну запись перечитать?
9 ноя 18, 14:24    [21729573]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
Virtual Student
Member

Откуда: Belarus
Сообщений: 289
Т.е. никто не рассматривает обычный DataSet.Locate('id', id, []) как вариант?
9 ноя 18, 14:31    [21729585]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
Virtual Student
Т.е. никто не рассматривает обычный DataSet.Locate('id', id, []) как вариант?

на второй картинке действие локейта. Они с первой отличаются?
9 ноя 18, 14:41    [21729611]     Ответить | Цитировать Сообщить модератору
 Re: Позиционирование при перечитывании запроса и GridMode  [new]
Фэйтл Эра
Member

Откуда:
Сообщений: 97
Леонов Юрий
Фэйтл Эра
Леонов Юрий,

зачем ты перечитываешь все данные? Ты что-то меняешь, кроме конкретной записи?

Нет, кроме конкретной не меняю, но изменения показать же нужно

Если остальные записи не меняешь - зачем перечитываешь весь набор данных???
9 ноя 18, 14:42    [21729614]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
Все форумы / Delphi Ответить