的当前行的第几列 | 展现.那么像上面布局图中的Search3的区域布局配置为:Newsearch1的区域布局配置为:
Newsearch3的区域布局配置为:
同理要实现更复杂的布局基于上述原则也是实现起来比较简单的。
配配就OK了2.2.2.标题待定2.3.APEX控件APEX作为一个强大的快速开发工具,当然少不了一些常用的控件,下拉框Commbox,值列表Lov,文本框Text,日历DataPick,报表Report,…。
这些控件的基本使用可参考我们知道控件都是可以有很多属性、事件、校验、DynamicAction。
其中DynamicAction是可以做很多操作的,比较重要的是执行pl/sql时类似于Ajax的无刷新控件属性:
lFormElementWidth:
控件的宽度lHorizontal/VerticalAlignment:
控件的显示位置还有Label显示位置。
lValueRequired:
是否必输入。
lConditionType:
控件显示的条件,只有满足了才显示。
lReadOnlyConditionType,:
控件只读的条件,只有满足了才只读。
lDefaultvalue:
设置控件的默认值。
lFormatMask:
控件值的格式掩码事件:
事件定义也是有属性可配置的:
lConditionType:
执行事件的前提条件lTrueActions:
事件发生后,对应控件的校验条件为真时执行的动作。
lFalseActions:
事件发生后,对应控件的校验条件为假时执行的动作。
lWHENCondition:
事件发生后,执行相应的动作的判断条件。
校验属性:
lWhenButtonPressed:
触发校验的ButtonlConditionType:
触发校验的前提条件lConditionExpression:
校验表达式lValidation:
执行相应的校验lErrormessagedisplaylocation:
错误信息显示方式lAssociatedItem:
错误信息关联到指定的Object下面做个具体的实例使用这些属性、事件、校验1、点击Button:
Search2Btn时校验X_Text1值是否为空,满足校验的前提条件是jjl_test表中存在记录user_id=’123’;2、当页面加载完,DatePick:
Datainit值赋值为当前日期3、当X_text2值不为空时,Region:
newsearch2隐藏,否则显示最终效果图:
StepByStep操作1、创建一个页面命名为Page22、Pl/sqlapps登录创建table:
jjl_test(user_idvarchar2(50),resp_idvarchar2(50),resp_appl_idvarchar2(50),login_namevarchar2(50),login_countnumber,login_datedate);insertintojjl_testvalues(‘123’,’’,’’,’’,’’);3、在Page2中创建六个htmlregion,对应的ParentRegionn选择PageTemplateBody
(1)4、Search1,search2,search3属于同一个TABLE,属性Column依次为1,2,2.属性StartNewGrid依次为Yes,No,No.属性StartNewRow依次为Yes,No,Yes.5、NewSearch1,newsearch2,newsearch3属于同一个TABLE,属性Column依次为1,2,3.属性StartNewGrid依次为Yes,No,No.属性StartNewRow依次为Yes,No,No.6、在search1中创建TextField:
P1_X_TEXT,P2_X_TEXT,search2中创建Button:
SEARCH2_BTN,search3中创建DatePick:
DATA,newsearch2中创建子区域:
newsearch_subpage1,new_search3_subpage2,new_search3_subpage3,属于同一个TABLE,属性Column依次为1,2,1.属性StartNewGrid依次为Yes,No,No.属性StartNewRow依次为Yes,No,Yes7、P1_X_TEXT鼠标右键创建相应的Validation:
Name:
X_TEXT1ISNOTNULLWhenButtonPressed:
SEARCH2_BTN.ConditionType:
Exists(SQLqueryreturnsatleastonerow)ConditionExpression1:
select1fromjjl_testjtwherejt.user_id=’123’;ValidationType:
FunctionReturningBooleanValidatoinExpression:
beginif:
P1_X_TEXTisnotnullthenreturntrue;endif;returnfalse;end;Errormessage:
X_TEXT1can’tbenull;8、P2_X_TEXT鼠标右键创建相应的DynamicActions:
Name:
Dynamic_action1;ConditonType:
Always;WhenEvent:
ChangeWhenSelectionType:
Item(s)WhenItem(s):
P2_X_TEXTWhenCondition:
isnotnullTrueActions:
HideRegion(newsearch2)FalseActions:
ShowRegion(newsearch2);9、创建PageLoad型的DynamicActionName:
page_load_set_date;ConditionType:
DynamicActoinNotconditionalWhenEvent:
PageLoadWhenConditionNoConditionTrueActions:
SetValueSetValue/Settings/SetType:
SQLStatementSetValue/Settings/SQLStatement:
selectsysdatefromdual;SetValue/AffectedElements/SelectionType:
Item(s)SetValue/AffectedElements/Item(s):
DATA2.4.Report常用增删改通常在APEX中对于记录的增删改是通过链接到新的页面去实现单条数据的更改。
本节主要介绍如何在一个TabularForm中不链接实现多行数据的增删改和客户化逻辑。
APEX的TablularForm开发类似于EBSForm开发,也是基于视图去开发。
下面实例开发一个Form,当更改用户的class_name与login_name时,更新用户的login_name,然后在另一张表校验class_name是否存在,若不存在报错,若存在则把当前勾选的记录插入另一张表jjl_test31、数据库中先创建APEX页面的TabularForm的View,同时创建一个APEX页面并创建TabularForm2、createtablejjl_class(class_idnumber,class_namevarchar2(50));createorreplaceviewjjl_class_test2asSELECTjt.user_id,jt.resp_id,jt.resp_appl_id,jt.login_name,jc.class_nameFROMjjl_test2jt,jjl_classjcWHEREjc.class_id=jt.class_id;3、配置页面TabularForm数据源4、创建一个RegionButton:
ApplyChange5、为ApplyChange创建Process:
6、运行效果如图:
当class_name不存在于jjl_class表中时当输入的classname存在时,运行的效果与结果如图:
把BBB更改为DDD点击ApplyChange后2.5.文件上传下载真是麻雀虽小,五脏俱全,上传下载在Apex里的实现是非常easy.下面的例子实现文件上至数据库--Createtable1、createtableJJL_FILE(idNUMBER,file_nmaeVARCHAR2(50),file_memetypeVARCHAR2(50),file_blobBLOB,file_commentsVARCHAR2(200),file_charsetVARCHAR2(20),last_update_dateDATE)2、创建Page:
updownloadfile,在该page中创建html区域:
uploadfile由于数据文件是上传至数据库表,需要在页面上传文件之前,可以在加载完head后去表里FetchRowfromjjl_file,然后在页面上创建相应的hidden项与表jjl_file中相字段相应。
就像在pl/sql中要往表里插一行记录时,可以先定义该表的Rowtype类型的变量,然后再做赋值与Commit;创建相应的regionitem,type:
hidden分别为p_file_id,p_file_name,p_file_charset,p_file_memetype创建processes:
fetchrowfromjjl_file;上图中的tablename要大写.双击之前hidden项,配置每项的Source属性,保持与jjl_file的列名一致。
如P_FILE_ID对应JJL_FILE中的ID。
展开阅读全文
相关搜索
资源标签