|
11.04.2011, 20:17 | #1 |
Участник
|
Подобная задача, только проще: как обновить DataSource из самой формы
Имею связанные по InnerJoin датасорсы и общий грид на них. По обычной Button вызывается (в Clicked()) обработка, меняющая значения в нескольких записях в подчиненной таблице. Хочу увидеть их обновленными в гриде. Если делаю: X++: _ds.reread(); _ds.refresh(); Если добавляю к этому X++: _ds.refreshEx(); Если делаю X++: _ds.executeQuery(); Если делаю, как написано в это теме: X++: anytype currentCursor; currentCursor = _ds.cursor(); // обработка... _ds.research(); _ds.findRecord(currentCursor); С подчиненным датасорсом тоже всё это пробовал - вообще ничего не обновляется. Никак не удается обновить записи и при этом остаться на текущей |
|
12.04.2011, 09:25 | #2 |
Участник
|
Какая версия AX? Если 2009, то у метода FormDataSource.research() появился булевый параметр _retainPosition, который позволяет сохранить позицию при обновлении данных формы.
Если версия более ранняя, то вроде так должно сработать: X++: Common common;
common.data();
// обработка...
_ds.research();
_ds.findRecord(common); X++: anytype uniqueValue; uniqueValue = x.UniqueField; // обработка... _ds.research(); _ds.findValue(fieldnum(X, UniqueField), SysQuery::value(uniqueValue)); Еще можно использовать element.args().lookupField() и element.args().lookupValue(): X++: anytype uniqueValue; uniqueValue = x.UniqueField; // обработка... element.args().lookupField(fieldnum(X, UniqueField)); element.args().lookupValue(SysQuery::value(uniqueValue)); _ds.research(); |
|
|
За это сообщение автора поблагодарили: Poleax (1), Geo (2), jeky (1). |
12.04.2011, 18:56 | #3 |
Участник
|
|
|
12.04.2011, 19:06 | #4 |
Участник
|
Здесь же спрошу, поскольку было в примере.
Есть ли какая-то разница между SysQuery::value() и queryValue() ? |
|
13.04.2011, 09:28 | #5 |
Участник
|
Цитата:
\Classes\Global\queryValue: X++: static str queryValue(anytype A) { return SysQuery::value(a); } |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|