|
|
#1 |
|
Участник
|
Обновление DataSource
На форме есть два связанных источника данных. При активации формы сохраняется положения курсора в родительском источнике и вызывается research(). Затем положение курсора восстанавливается. Для подчиненного источника хочу сделать тоже самое, но ничего не получается. Видимо это связанно с типом соединения - Active и Delayed. Пробовал менять их, но все без изменения: курсор в подчиненном источнике становиться на первую запись.
Может есть какой-то другой выход? Сейчас опишу задачу. Из формы 1 вызывается форма 2. В ней обновляются таблицы. Эти таблицы являются источниками данных формы 1. Нужно, чтобы при обновлении этих таблиц обновлялись источники данных формы 1 и курсоры становились на первоначальные позиции. |
|
|
|
|
#2 |
|
Moderator
|
Цитата:
Сообщение от Petruccio
... Затем положение курсора восстанавливается. Для подчиненного источника хочу сделать тоже самое, но ничего не получается...
__________________
Андрей. |
|
|
|
|
#3 |
|
Участник
|
Код: public void activate(boolean _active)
{
SalesId SalId;
Sales sal;
WorkCode wrkCode;
SalesLines sl;
;
SalId = Sales.SalesId;
wrkCode = SalesLines.WorkCode;
sal = Sales::find(SalId);
sl = SalesLines::find(SalId,wrkCode);
super(_active);
Sales_ds.research();
Sales_ds.findRecord(sal);
SalesLines_ds.research();
SalesLines_ds.findRecord(sl);
} |
|
|
|
|
#4 |
|
Moderator
|
Да, действительно, дочерний datasource сбрасывает свою позицию.
Тут можно посоветовать такое решение: в activate() присваивать глобальной переменной текущую SalesLine, а в SalesLine_DS.executeQuery() проверять ее заполнение и при наличии записи делать findRecord() и затем сбрасывать значение переменной.
__________________
Андрей. |
|
|
|
|
#5 |
|
Участник
|
Как вариант
1. описать в ClassDeclaration формы флаг 2. установить при инициализации формы значение флага X++: fl = false;X++: public void linkActive() { if (!fl) super(); else fl = false; } X++: ...
Sales_ds.research();
Sales_ds.findRecord(sal);
SalesLines_ds.linkActive();
// внутри в super() идет вызов SalesLines_ds.queryExecute()
// или оставить research();
SalesLines_ds.findRecord(sl);
fl = true;
__________________
Axapta v.3.0 sp5 kr2 |
|
|