Oracle Form - 一种全选/全不选功能设计

  • 功能设计

  • 设计思路

全选/全不选框要实现的是:1、自己被勾选,就将列表全部勾选;2、自己被取消,就将列表全部取消

列表单选框要实现的是:自己被取消,互动取消全选框 

  • 开发实现
  1. 列表中的复选框:数据块中增加ITEM,子类信息CHECKBOX,选中时值Y,未选中值N(本例中为DETAILS.SELECTED)
  2. 全选/全不选框:一个非数据库项,子类信息CHECKBOX,选中时值Y,未选中值N(本例中为CONTROL.SELECT_ALL)
  3. 增加一个参数ALL_SELECTED,初始值N,用来记录列表是否为全部选中之状态
  4. CONTROL.SELECT_ALL触发器WHEN-CHECKBOX-CHANGED代码
declare
  l_cursor_record number;
begin
  if :control.select_all = 'Y' then
    -- 勾选
    if nvl(:parameter.all_selected, 'N') != 'Y' then
      -- 此时列表的状态不是全部选中
      go_block('DETAILS');
      -- 遍历每一行,并勾选复选框,最后停在列表一开始定位的行     
      loop
        exit when :system.cursor_record = l_cursor_record;
        l_cursor_record := nvl(l_cursor_record, :system.cursor_record);
        :details.selected := 'Y';
        if :system.last_record = 'TRUE' then
          first_record;
        else
          next_record;
        end if;
      end loop;
      -- 记录列表状态为全部选中
      :parameter.all_selected := 'Y';
    end if;
  elsif :control.select_all = 'N' then
    -- 去掉勾选
    if :parameter.all_selected = 'Y' then
      -- 此时列表的状态是全部选中
      go_block('DETAILS');
      -- 遍历每一行,并取消复选框,最后停在列表一开始定位的行     
      loop
        exit when :system.cursor_record = l_cursor_record;
        l_cursor_record := nvl(l_cursor_record, :system.cursor_record);
        :details.selected       := 'N';
        :parameter.all_selected := 'N';
        if :system.last_record = 'TRUE' then
          first_record;
        else
          next_record;
        end if;
      end loop;
    end if;
  end if;
end;
  1.  DETAILS.SELECTED触发器WHEN-CHECKBOX-CHANGED
if :details.selected = 'N' then
	-- 被取消选中,记录列表状态为未全选,并联动取消全选复选框
    :parameter.all_selected := 'N';
	:control.select_all := 'N';
end if;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值