我有一个带有记录列表的交互式网格,让我们说它有一个日期列。现在我只想显示那些记录或只编辑那些可编辑的记录,其中该日期列中的月份等于页面加载时的当前月份。现在我知道可以使用执行javascript代码作为选项创建动态操作。但是实际的代码是什么呢?我试图用这个
访问网格var grid = apex.region("emp").widget().interactiveGrid("getViews", "grid");
然后我可以使用grid.model._data获取记录并循环遍历它并检查日期列值并验证它是否是当前月份,但在检查后我不知道是否设置了css对于该特定行,显示为{display:none;}。任何帮助,将不胜感激。感谢。
答案 0 :(得分:2)
试试这个:
1 - 在所需列的交互式网格中创建动态操作 禁用
事件:行初始化[交互式网格]
选择类型:列
地区:您的网格区域
列:您要禁用或启用的列
2 - 在客户端条件:
类型:JavaScript表达式
Javascript Expression:
//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
专栏" CREDIT LIMIT"当值为3000
时禁用答案 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