| ''''civic''''
1(展开节点)
1
''''Airplane''''
''''''''
''''plane''''
0
2
''''Boeing''''
''''''''
''''747''''
0
2
''''Boeing''''
''''''''
''''757''''
生成记录组的方式又分为两种。
1、 从查询生成记录组
描述:利用树的查询语句(connect by…prior…start with…)生成记录组,设置树的属性来生成。
优点:编程简单,方便。
缺点:只适用于可以构造出树状查询语句的情况下。
例子:
v_ignore number;
rg_emps recordgroup;
begin
rg_emps := find_group(''''EMPS'''');
--如果非空,则清空数据
if not id_null(rg_emps) then
delete_group(rg_emps);
end if;
--构造记录组
rg_emps := create_group_from_query(''''EMPS'''',
''''select 1, level, ename, NULL, to_char(empno) '''' ||
''''from emp '''' ||
''''connect by prior empno = mgr '''' ||
''''start with job = ''''''''PRESIDENT'''''''''''');
v_ignore := populate_group(rg_emps);
ftree.set_tree_property(''''tree_view.tree_emp'''', ftree.record_group, rg_emps);
end;
2、 用行列数据直接构造记录组
描述:记录组一般为行列结构,以循环方式直接向记录组中添加单元数据。
优点:可直接控制记录组的样式。
缺点:对多层结构,编程也较为复杂。
例子:
--单位CURSOR
cursor cursor_dept is
select dname, deptno from dept order by dname;
--雇员CURSOR
cursor cursor_emp(p_dno number) is
select ename, empno from emp where deptno = p_dno order by ename;
v_i number;
v_ignore number;
rg_emps recordgroup;
rg_depts recordgroup;
v_init_state groupcolumn;
v_level groupcolumn;
v_label groupcolumn;
v_icon groupcolumn;
v_value groupcolumn;
begin
rg_depts := find_group(''''DEPTS'''');
--如有数据,则清空记录组
if not id_null(rg_depts) then
delete_group(rg_depts);
end if;
rg_depts := create_group(''''DEPTS'''');
--这里自定义你需要的记录组中列的数据类型和长度
--初始状态(指展开、收缩还是叶节点)
v_init_state := add_group_column(rg_depts, ''''init_state'''', number_column);
--所在层数
v_level := add_group_column(rg_depts, ''''level'''', number_column);
--显示文本
v_label := add_group_column(rg_depts, ''''label'''', char_column, 40);
--图标
v_icon := add_group_column(rg_depts, ''''icon'''', char_column, 20);
--值
v_value := add_group_column(rg_depts, ''''value'''', char_column, 5);
v_i := 1;
for deptrec in cursor_dept loop
add_group_row(rg_depts, v_i);
set_group_number_cell(v_init_state, v_i, 1);
set_group_number_cell(v_level , v_i, 1);
set_group_char_cell (v_label , v_i, deptrec.dname);
set_group_char_cell (v_icon , v_i, NULL);
set_group_char_cell (v_value & 上一页 [1] [2] [3] [4] 下一页 |