全选/全不选框要实现的是:1、自己被勾选,就将列表全部勾选;2、自己被取消,就将列表全部取消
列表单选框要实现的是:自己被取消,互动取消全选框
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); if :details.po_num is not null then :details.selected := 'Y'; end if; 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); if :details.po_num is not null then :details.selected := 'N'; :parameter.all_selected := 'N'; end if; if :system.last_record = 'TRUE' then first_record; else next_record; end if; end loop; end if; end if; end;
if :details.selected = 'N' then -- 被取消选中,记录列表状态为未全选,并联动取消全选复选框 :parameter.all_selected := 'N'; :control.select_all := 'N'; end if;