Oracle Apex 18.1交互式网格(IG)是否以编程方式设置过滤器?自定义IG搜索

fpu*_*lch 3 javascript jquery plsql oracle-apex

是否可以通过Javascript或PL / SQL API在Oracle Apex中为IG设置过滤器?

做我的研究时,我偶然发现了5.1.4版的APEX IG Cookbook 或一些Blogposts 如何破解APEX交互式网格系列以使用Javascript自定义IG。因此,设置与PL / SQL APEX_IR.ADD_FILTER过程类似的过滤器,应该可以为交互式报表(IR)设置过滤器,以使列名,运算符和过滤器值成为可能。

我想出了内部表的名称,如果设置了过滤器,则将它们存储在内部表中(IR过滤器为APEX_APPLICATION_PAGE_IR_COND,IG过滤器为APEX_APPL_PAGE_IG_RPT_FILTERS),但真的不知道这是否有帮助。

apex.region("StaticRegionID").widget().toolbar("findElement","search_field").val("SearchTextValue"); apex.region("StaticRegionID").widget().interactiveGrid("getActions").invoke("search"); 有可能设置Searchvalue并执行搜索动作,但它是不能够设定操作者/过滤器类型(EQ,NEQ,LT,LTE,GT,GTE,LIKE,NLIKE,N,NN,C,NC ,IN,NIN)

到目前为止,我还没有找到libaries\apex\widget.interactiveGrid.js在调用搜索操作以添加过滤器之前自定义搜索操作或设置正确参数的好方法。

有谁知道如何做到这一点?

fpu*_*lch 5

我刚刚解决了我的问题。addFilter内部有一个方法libaries\apex\widget.interactiveGrid.js,可以使用过滤器对象和选项对象作为参数来简单地调用它。当与其他输入字段的值结合使用时,这真的很有用。

例:

apex.region("YourStaticRegionID").widget().interactiveGrid("addFilter", {
  type: 'column',
  columnType: 'column',
  columnName: 'YourColumnName',
  operator: 'EQ',
  value: $v2('P2_NEW'),
  isCaseSensitive: false
});
Run Code Online (Sandbox Code Playgroud)

$ V2 API在本例中使用上面得到的搜索词用户在文本输入字段名为P2_NEW类型。