-- Create table
CREATE TABLE cux_test_jtf_grid
AS
SELECT line_num
,vendor_name
,vendor_id
,order_date
,po_number
,inventory_item_id
,item_number
,DESCRIPTION
,quantity
,unit_of_measure
,unit_price
,currency_code
FROM xxibi_rcv_att_ohhand_v ;
--Or Create table
create table CUX_TEST_JTF_GRID
(
LINE_NUM NUMBER not null,
VENDOR_NAME VARCHAR2(240),
VENDOR_ID NUMBER,
ORDER_DATE DATE,
PO_NUMBER VARCHAR2(20) not null,
INVENTORY_ITEM_ID NUMBER not null,
ITEM_NUMBER VARCHAR2(40),
DESCRIPTION VARCHAR2(240),
QUANTITY NUMBER not null,
UNIT_OF_MEASURE VARCHAR2(25) not null,
UNIT_PRICE NUMBER,
CURRENCY_CODE VARCHAR2(15)
)
当然了,从 Template开始的常规修改步骤也是要做的。
6.修改GRID块
添加三个ITEM
Bean Area :READONLY_GRID
Button :FIND
Button :DETAIL
7.布局ITEM到画布
对于Bean Area 只能在其属性上设置其在画布上的显示宽度和高度
8.添加触发器代码
Form 级别 WHEN-NEW-FORM-INSTANCE
IF NOT jtf_grid.getbooleanproperty(‘DEMO_GRID.READONLY_GRID‘,
jtf_grid_property.initialized) THEN
jtf_grid.init(‘DEMO_GRID.READONLY_GRID‘,‘CUX_TEST_JTF_GRID_V‘);
jtf_grid.setbooleanproperty(‘DEMO_GRID.READONLY_GRID‘,
jtf_grid_property.allow_multiple_row_selection,
FALSE);
END IF ;
用户点击 Find,通常是弹出查询界面,输入完条件再执行查询,我们这里省去查询条件界面
Find 按钮 WHEN-BUTTON-PRESSED
jtf_grid.removeallbindvariables( ‘DEMO_GRID.READONLY_GRID‘);
jtf_grid.setcharproperty(‘DEMO_GRID.READONLY_GRID‘
,jtf_grid_property.where_clause
,‘CURRENCY_CODE = ‘‘USD‘‘‘);
IF jtf_grid.getbooleanproperty(‘DEMO_GRID.READONLY_GRID‘
,jtf_grid_property.is_populated) THEN
jtf_grid.refresh(‘DEMO_GRID.READONLY_GRID‘);
ELSE
jtf_grid.populate(‘DEMO_GRID.READONLY_GRID‘);
END IF ;
9.处理选择事件
用户选中某行后,我们可以根据其选中的信息去打开一个普通块,这样首先需要在 FIND按钮的WHEN-BUTTON-PRESSED 中编写
jtf_grid.requestrowselection(‘DEMO_GRID.READONLY_GRID‘);
可以打开该包查看其具体作用。然后在过程 jtf_custom_grid_event中响应选择事件
PROCEDURE JTF_CUSTOM_GRID_EVENT(gridName in varchar2, eventType in varchar2) IS
grid_selection JTF_GRID_PROPERTY.ROW_SELECTION_TYPE;
l_start_row number;
BEGIN
IF eventtype = jtf_grid_events.hyperlink_event THEN
null;
ELSIF eventtype = jtf_grid_events.new_record_event THEN
null;
ELSIF eventtype = jtf_grid_events.popup_event THEN
null;
ELSIF eventtype = jtf_grid_events.row_selection_event THEN
grid_selection := jtf_grid.getRowSelection(‘DMEO_GRID.READONLY_GRID‘ );
if grid_selection.COUNT > 0 then
l_start_row := grid_selection(1).startrow;
--fnd_message.debug(jtf_grid.getcolumncharvalue(‘DMEO_GRID.READONLY_GRID‘,l_start_row,‘NAME‘));
end if ;
ELSIF eventtype = jtf_grid_events.end_of_find_event THEN
null;
ELSIF eventtype = jtf_grid_events.doubleclick_event THEN
null;
END IF;
END;