|
21.08.2009, 15:56 | #1 |
Участник
|
кеширование и вычисление display метода
Помогите понять и разъяснить ситуацию.
В шапке журнала есть дисплейные методы, которые вычисляются на основе некоторых полей из строк. Эти дисплейные методы закешированы на ините источника данных. Но хочется, чтоб при изменении значений полей в строках , визуально и изменялось значение дисплейных полей, а не только при нажатии F5 или сохранении записи. Что-то refresh источника данных не помогает. В чем может быть загвоздка? |
|
21.08.2009, 16:17 | #2 |
Участник
|
попробуйте executeQuery вместо refresh
|
|
21.08.2009, 16:25 | #3 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: S.Kuskov (1). |
21.08.2009, 16:36 | #4 |
Участник
|
reread()
Возможно в данном случае подойдет принудительное чтение текущей записи данных шапки журнала методом reread() (DataSource.reread()) ?
Upd: вдогонку - а если так DataSource_ds.cacheCalculateMethod( tablemethodstr(DataSourceTable,methodName)); ?
__________________
Dynamics AX 4.0 SP2 Последний раз редактировалось in.dc; 21.08.2009 в 16:44. Причина: cacheCalculateMethod |
|
21.08.2009, 19:35 | #5 |
Участник
|
Цитата:
|
|
21.08.2009, 16:37 | #6 |
Участник
|
Ради интереса - попробуйте вместо datasource.refresh() вызывать datasource.refreshEx(-1);
|
|
21.08.2009, 16:40 | #7 |
Боец
|
А ещё можно сэмулировать нажатие F5 на форме: X++: void clicked() { super(); #define.TaskF5(0x0B17) element.task(#TaskF5); } |
|
|
За это сообщение автора поблагодарили: kashperuk (1). |
21.08.2009, 18:46 | #8 |
Участник
|
Цитата:
Цитата:
Для обновления значения кеша используйте другие методы датасорса, к примеру, те, что были предложены участником in.dc
__________________
Sergey Nefedov |
|
21.08.2009, 21:18 | #9 |
Участник
|
Цитата:
Цитата:
X++: public void refreshEx([anytype pos]) |
|
22.08.2009, 13:09 | #10 |
Участник
|
Цитата:
X++: public void modified() { super(); MyTable.Field = AnotherTable::find(MyTable.ModifiedField).Field; MyTable_ds.refresh(); }
__________________
// no comments |
|
23.08.2009, 14:32 | #11 |
Участник
|
Цитата:
Ни DataSource_ds.refresh(), ни dataSource.refreshEx(-1) в данном случае не помогут Вам, поскольку эти методы только перерисовывают текущую запись.
Цитата:
__________________
Sergey Nefedov |
|
04.05.2012, 12:56 | #12 |
Участник
|
Так как же всетаки нужно обновлять кеш display методов?
Столкнулся с тем что проще не использовать кеширование display методов, чем возиться с обновлением грида.. А задача простая - обновлять сумму по строкам в гриде, при добавлении, удалении и измении строк.. |
|
04.05.2012, 14:05 | #13 |
Роман Долгополов (RDOL)
|
не пойму в чем проблема. по крайней мере для 2009 и для исходной задачи. cacheCalculateMethod уже упоминался в теме
X++: ds.cacheCalculateMethod(); ds.refresh(); |
|
|
За это сообщение автора поблагодарили: gl00mie (1), alvares (1). |
04.05.2012, 15:31 | #14 |
Участник
|
Слона то я и не приметил, хотя все остальное предложенное в теме попробовал
Спасибо, работает! |
|