如何根据某些列值在交互式网格中隐藏一行?

How can i hide a row in interactive grid based on some column value?

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

访问网格
var grid = apex.region("emp").widget().interactiveGrid("getViews", "grid");

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

i only want to show those records (...) whose month in that date column is equal to the current month on page load

由于交互式网格的源代码是 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

试试这个:

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

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

选择类型:列

区域:您的网格区域

列:要禁用或启用的列

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 - 真正的行动

禁用

选择类型:列

列:要禁用或启用的列

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

当值为 3000 时 "CREDIT LIMIT" 列被禁用