![]() |
#1 |
Участник
|
_ds.research(true) не работает
День добрый!
Ситуация следующая. На форме есть два связанных грида. Верхний грид с группировочными строками и суммами. Датасорс этого грида построен на основе временной таблицы. Нижний грид со строками этих групп. Смысл в том, что при изменении чисел в строках, должны персчитываться суммы в верхнем гриде. Перекрыл метод write датасорса строк. В нем делаю расчет сумм и записываю в таблицу с группами, обновляю датасорс групп, чтобы пользователь увидел изменения. После вызова Groups_ds.research(true); сбрасывается позиция в гриде с группами, хотя, судя по описанию метода, она должна сохраниться. В чем может быть дело? Я конечно написал перепозиционирование руками через findRecord, но выглядит не очень красиво.. Спасибо! |
|
![]() |
#2 |
Участник
|
В данном случае вам достаточно будет сделать
X++: _ds.reread(); _ds.refresh(); p.s. А с research(true) нужно вообще быть аккуратнее. Вот тут Иван объясняет что это не аналог findRecord. Ищется не конкретная запись в гриде, а позиция. |
|
![]() |
#3 |
Участник
|
В том и дело, что надо обновить несколько записей, не только текущую. Т.к. меняем строку, меняется сумма в группе этой строки, потом в родительской группе и т.д.
В принципе мне подойдет и просто позиция. |
|
![]() |
#4 |
Участник
|
Вот тут писал про такое же поведение: Kashperuk Ivan: Tutorial: refresh, reread, research, executeQuery - which one to use?
Судя по ответу Ивана, так и должно быть ![]()
__________________
Ivanhoe as is.. |
|
![]() |
#5 |
Участник
|
Да, читал этот пост. Дело в том, что позиция не сохраняется. После вызова метода, курсор улетает на первую строку. То есть поведение метода с параметром и без никак не отличается.
|
|
![]() |
#6 |
Участник
|
Какая версия системы?
__________________
Ivanhoe as is.. |
|
![]() |
#7 |
Участник
|
Kernel version: 5.0.1000.52
Application version: 5.0.1001.176 |
|
![]() |
#8 |
Боец
|
|
|
![]() |
#9 |
Участник
|
Нет,таблица не пересоздается, просто обновляются суммы
|
|
Теги |
research |
|
|