【问题标题】:How can i hide a row in interactive grid based on some column value?如何根据某些列值在交互式网格中隐藏一行?
【发布时间】:2018-08-15 15:50:37
【问题描述】:

我有一个带有记录列表的交互式网格,可以说它有一个日期列。现在我只想显示这些记录或仅使那些记录可编辑,其日期列中的月份等于页面加载时的当前月份。现在我知道可以使用执行 javascript 代码作为选项来创建动态操作。但是实际的代码是什么?我试图用这个访问网格

var grid = apex.region("emp").widget().interactiveGrid("getViews", "grid");

然后我可以使用 grid.model._data 来获取记录并遍历它并检查日期列值并验证它是否是当前月份,但检查后我不知道设置 css对于该特定行作为 {display: none;}。任何帮助,将不胜感激。谢谢。

【问题讨论】:

    标签: oracle oracle-apex oracle-apex-5 oracle-apex-5.1


    【解决方案1】:

    我只想显示那些在该日期列中的月份等于页面上当前月份的记录 (...) 加载

    由于交互式网格的来源是SELECT 语句,为什么不包含一个WHERE 子句,它会这样写:

    where trunc(date_column, 'mm') = trunc(sysdate, 'mm')
    

    是的,我知道 - 可能会影响性能(未使用 DATE_COLUMN 上的索引)等等,但这只是一般的想法。如果结果还可以,可以进一步改进。

    [编辑,看到评论后]

    修改WHERE子句没问题:

    where date_column >= 
      case when to_number(to_char(sysdate, 'dd')) <= 5 then trunc(add_months(sysdate, -1), 'mm')
           else trunc(sysdate, 'mm')
      end
    

    【讨论】:

    • 实际上我要获取的记录并不完全是当前月份的记录。实际的查询是假设我们有二月和三月。现在直到 3 月 5 日,我也想获取 2 月的记录,而 3 月 5 日之后,只获取 3 月的记录。这会使查询变得过于复杂,所以如果可能的话,我正在寻找一种解决方法。
    • @Simar,这样的改变并没有使它变得那么复杂到无法完成。我修改了我的信息;看看吧。
    【解决方案2】:

    试试这个:

    1 - 在您想要的列上的交互式网格中创建动态操作 禁用

    事件:行初始化[交互式网格]

    选择类型:列

    区域:您的网格区域

    Columns:要禁用或启用的列

    2 - 在客户端条件:

    类型:JavaScript 表达式

    Javascript 表达式:

    //Suppose there is a function (getMonth) 
    //that returns the number of the month (1..12) in a date string;
    //you can do this expression.
    getMonth($(this.triggeringElement).val()) != ((new Date()).getMonth() + 1)
    

    3 - 真正的行动

    禁用

    选择类型:列

    Columns : 要禁用或启用的列

    示例:https://apex.oracle.com/pls/apex/f?p=145797:8

    “CREDIT LIMIT”列在值为 3000 时禁用

    【讨论】:

    • 感谢您的帮助。我想出了一种使用javascript的方法。 :)
    • 我已编辑响应以在客户端条件下使用 javascript。您可以使用以下方法获取列中每个单元格的值: $(this.triggeringElement).val()
    猜你喜欢
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多