04.05.2006, 19:12 | #1 |
Участник
|
Обновление DataSource
На форме есть два связанных источника данных. При активации формы сохраняется положения курсора в родительском источнике и вызывается research(). Затем положение курсора восстанавливается. Для подчиненного источника хочу сделать тоже самое, но ничего не получается. Видимо это связанно с типом соединения - Active и Delayed. Пробовал менять их, но все без изменения: курсор в подчиненном источнике становиться на первую запись.
Может есть какой-то другой выход? Сейчас опишу задачу. Из формы 1 вызывается форма 2. В ней обновляются таблицы. Эти таблицы являются источниками данных формы 1. Нужно, чтобы при обновлении этих таблиц обновлялись источники данных формы 1 и курсоры становились на первоначальные позиции. |
|
05.05.2006, 00:51 | #2 |
Moderator
|
Цитата:
Сообщение от Petruccio
... Затем положение курсора восстанавливается. Для подчиненного источника хочу сделать тоже самое, но ничего не получается...
__________________
Андрей. |
|
05.05.2006, 01:10 | #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); } |
|
05.05.2006, 11:11 | #4 |
Moderator
|
Да, действительно, дочерний datasource сбрасывает свою позицию.
Тут можно посоветовать такое решение: в activate() присваивать глобальной переменной текущую SalesLine, а в SalesLine_DS.executeQuery() проверять ее заполнение и при наличии записи делать findRecord() и затем сбрасывать значение переменной.
__________________
Андрей. |
|
05.05.2006, 15:09 | #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 |
|