- 功能设计
- 开发步骤
- 列表中的复选框:数据块中增加ITEM,子类信息CHECKBOX,选中时值Y,未选中值N(本例中为DETAILS.SELECTED)
- 全选/全不选框:一个非数据库项,子类信息CHECKBOX,选中时值Y,未选中值N(本例中为CONTROL.SELECT_ALL)
- 列表数据块增加块级的用户命名触发器SELECT_ALL
:DETAILS.SELECTED := :CONTROL.SELECT_ALL;
- CONTROL.SELECT_ALL触发器WHEN-CHECKBOX-CHANGED代码
APP_RECORD.FOR_ALL_RECORDS('DETAILS', 'SELECT_ALL');
- DETAILS.SELECTED创建触发器WHEN-CHECKBOX-CHANGED代码
IF :DETAILS.SELECTED = 'N' THEN -- 被取消选中,联动取消全选复选框 :CONTROL.SELECT_ALL := 'N'; END IF;
--------------------------------------
APP_RECORD.FOR_ALL_RECORDS可以批量触发某个数据块所有记录的指定触发器,例程中第一个参数指定目标数据块DETAILS,第二个参数指定要触发的触发器名称SELECT_ALL
例程中SELECT_ALL触发器是建立在数据块级的,如果在数据块首个可导航的ITEM下也有同名触发器,则也会触发这个触发器。换句话说DETAILS数据块下级和上级的SELECT_ALL都会被依次触发,当然还取决于各级触发器的执行层次