【问题标题】:Oracle APEX - I need help to setup dynamic search filter on IG reportOracle APEX - 我需要帮助来设置 IG 报告的动态搜索过滤器
【发布时间】:2020-03-11 07:06:41
【问题描述】:

我有一个 IG 区域,我在其中禁用了工具栏并创建了我的自定义搜索项。

我希望用户能够在搜索项(名为 P8_SEARCH)上键入名称的前三个字符,并且 IG 报告将仅显示以这 3 个字符开头的名称。

这应该在不点击任何按钮的情况下发生。 IG报告查询如下图:

select member_id, first_name, last_name , address, dob, home_phone, cell_phone,
email_address from member_profile where first_name like '%'||:P8_SEARCH||'%';

我还创建了带有按键释放事件和 True 动作执行 JavaScript 代码的动态动作,如下所示:

var keyPressCount=0;

$("#P8_SEARCH").on("keypress", () => {
    if (keyPressCount < 2) {
        keyPressCount++;
    } else {
        $s("P8_SEARCH", apex.item( "P8_SEARCH" ).getValue());
    }
})

如何在不提交页面的情况下实现此目的?我将不胜感激任何建议。示例:

【问题讨论】:

    标签: oracle oracle-apex


    【解决方案1】:

    为您的 IG 区域设置一个 static_id,在动态操作中将 apex.region("yourStaticId").refresh();添加到您的 JS 代码中,这将仅刷新该区域。 像这样:

    var keyPressCount=0;
    
    $("#P8_SEARCH").on("keypress", () => {
        if (keyPressCount < 2) {
            keyPressCount++;
        } else {
            $s("P8_SEARCH", apex.item( "P8_SEARCH" ).getValue());
            apex.region("yourStaticId").refresh();
        }
    })
    

    【讨论】:

    • 感谢您的回复,我在JS代码中添加了刷新行但收到错误“Uncaught TypeError: Cannot read property 'refresh' of null” 我猜是设置会话有问题P8_SEARCH 项的值。试图对此进行调查。
    • 别忘了在IG区域设置你的static_id,在我的例子中你必须将static_id设置为yourStaticId
    • 非常感谢!那行得通。我之前使用的是“#P8_SEARCH”,而不是“P8_SEARCH”
    【解决方案2】:

    如果搜索项存储在关联表中,我的想法是您可以关联 PL/SQL 表达式以使用 Process 执行。此过程可以在自定义操作上执行。

    另一个想法是将动态动作与隐藏的按钮按下相关联,并让 JavaScript 代码点击按钮。然后,您可以通过按键释放事件“模拟”动态操作的触发器的存在

    你怎么看?

    【讨论】:

    • 感谢您的建议,我会尝试按下隐藏按钮的方法...
    猜你喜欢
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 2019-12-26
    • 2016-12-07
    相关资源
    最近更新 更多