我在APEX 18.2中设置了一个页面,它包含一个IG。我可以从菜单中正常访问此页面,或者如果按下按钮,我可以将其设置为从其他站点进入此处。如果按下该按钮,则第一个站点上的隐藏项也会设置为一个值,并且我想清除所有当前过滤器并为该值设置一个新过滤器,该过滤器位于两列中的一列中。
我已经检查了我在网上可以找到的所有内容,但是官方的JSDoc没有关于所需方法的内容,其他来源并不完全包含我需要的内容。
Oracle Apex 18.1 Interactive Grid (IG) Setting filters programmatically? Customizing IG Search这是迄今为止我设置过滤器的最佳资源,但它只过滤一列,他描述的第一种方法对我没用,给出了错误。
我还发现了一些代码来清除过滤器,但是它实际上重置了报告,如果它实际起作用,它对我有用,但是它会触发错误的一半时间。实际上得到了ORA-2291,我不知道它是什么。我有时也没有找到数据
我用来设置过滤器的代码与第一个链接基本相同:
apex.region("MY_IG").widget().interactiveGrid("addFilter", {
type: 'column',
columnType: 'column',
columnName: 'COLUMN_NAME',
operator: 'C',
value: $v2('PAGE_ITEM'),
isCaseSensitive: false
});
但这会将过滤器应用于单个列。我想将它设置为两列,或者只是在任何地方都可以设置它。
我用来清除过滤器/重置报告的代码:
apex.region("MY_IG").call("getActions").invoke('reset-report');
我希望触发这些代码块的Dynamic操作清除所有过滤器并设置一个新的过滤器,以评估PAGE_ITEM中的值是否包含在两列中的任何一列中。
实际上没有找到如何做我想要的,但做了不同的事情来获得相同的结果。
结束只是在我的SQL查询中用WHERE子句替换所有这些。