Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Динамическая установка фильтров в Interactive Grid
|
|||
|---|---|---|---|
|
#18+
Всем привет! Задача состоит в том, чтобы фильтровать содержимое грида, перемещаясь по другим элементам страницы. Фильтрация происходит только в соответствующем режиме, который переключается кнопкой на тулбаре грида. Сам набор данных (запрос), на котором основан грид, не надо фильтровать, т.е. имеется в виду что запрос будет без всяких параметров (переменных привязки). Нужно чтобы фильтры формировались самим гридом, чтобы пользователь видел, как отфильтрованы данные и мог этот фильтр поменять или отключить. При включении режима "связки" фильтры, которые были установлены ранее, должны переформировываться согласно текущим данным на странице. Формирование фильтров выполняется следующим кодом, который указан в свойстве страницы "Function and Global Variable Declaration": Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. relGrid - означает включен режим связи или нет. Вот код добавления в тулбар грида кнопки, которая управляет этим режимом: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. Проблема заключается в том, что когда повторно включаешь фильтрацию этот код вместо того, чтобы удалить все предыдущие фильтры дублирует их. Какие-то он удаляет и перезаписывает, но в большинстве случаев просто добавляет новые. Складывается такое впечатление, что программа не ждет удаления или вовсе его не выполняет. Хотя при работе "вручную" - при изменении элементов страницы - все происходит как надо. Вот набросал пример иллюстрирующий данную проблему. Логин/пароль - test/test. Выбор данных в графике выполняется двойным кликом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 09:07 |
|
||
|
Динамическая установка фильтров в Interactive Grid
|
|||
|---|---|---|---|
|
#18+
Ну тут на лицо распространненая ошибка. Вы забыли что асинхроность. Именно поэтому вручную у вас работает, а автоматически нет. По просту говоря, прежде чем установить новый фильтр, вы должны дождаться выполнения удаления фильтров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 10:23 |
|
||
|
Динамическая установка фильтров в Interactive Grid
|
|||
|---|---|---|---|
|
#18+
blkangel, А где вы здесь увидели асинхронность? Что-то не могу найти ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 11:21 |
|
||
|
Динамическая установка фильтров в Interactive Grid
|
|||
|---|---|---|---|
|
#18+
DevOpsblkangel, А где вы здесь увидели асинхронность? Что-то не могу найти В том то и дело, что автор этого не учел, поэтому и не видите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 14:03 |
|
||
|
Динамическая установка фильтров в Interactive Grid
|
|||
|---|---|---|---|
|
#18+
blkangel, получается, что действия по очистке фильтров и их установке нужно разнести по отдельным асинхронным функциям, так? Подскажите, в каком направлении копать. Просто в JS и APEX буквально месяц-полтора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 14:20 |
|
||
|
Динамическая установка фильтров в Interactive Grid
|
|||
|---|---|---|---|
|
#18+
blkangel, Какие то функции у APEX API асинхронные что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 14:25 |
|
||
|
Динамическая установка фильтров в Interactive Grid
|
|||
|---|---|---|---|
|
#18+
Очистка фильтра и установка фильтра это асинхронные Ajax вызовы. Результат возрата этих функий полная перерисовка региона. Кстати пользователь это будет видеть, что сначала регион очистился от фильтров, потом фильтр установил, поэтому если есть API то и удаление и установку надо делать одним вызовом. Если такой возможности нет. то после удаления фильтров необходимо дождается его выполения и на событие "apexafterrefresh" запустить функцию установки фильтра. P.S. Выполнение функции на событие надо очишать, иначе она будет срабатывать и при установки фильтра пользователем. P.S.S. В Вашем скрипте я вижу очистку фильтров в двух местах, возможно так и надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 15:22 |
|
||
|
Динамическая установка фильтров в Interactive Grid
|
|||
|---|---|---|---|
|
#18+
blkangel, спасибо за советы, особенно про API. Это еще раз заставило меня открыть interactiveGrid.min.js, собственно где я и нашел функции addFilter/deleteFilter, и еще раз прошерстить его по слову "Filter" :) Таким образом я нашел место где эти функции вызываются с параметром в виде объекта: Код: javascript 1. 2. 3. 4. 5. Его значения и управляют перерисовкой грида. Вот как я это применил в атрибутах самого грида: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. Главное, чтобы в последней команде управления фильтрами свойства save и refreshData были true . Код добавления/обновления фильтров: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. Работу всего этого вживую можно увидеть в том же примере из моего первого поста. Кстати, кто-нибудь знает где найти файл interactiveGrid.js ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2017, 19:36 |
|
||
|
Динамическая установка фильтров в Interactive Grid
|
|||
|---|---|---|---|
|
#18+
S-V-E, widget.interactiveGrid.js можно найти почти там же, что и сжатый вариант. Например, для публичного хостинга от Oracle это https://apex.oracle.com/i/libraries/apex/widget.interactiveGrid.js Ну и в каталоге инсталляции Apex apex/images/libraries/apex, если таковой доступен вам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2017, 11:13 |
|
||
|
|

start [/forum/topic.php?fid=50&fpage=13&tid=1874255]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 31ms |
| total: | 191ms |

| 0 / 0 |
