前台事件触发与响应 TRIGGER EVENT
TRIGGER/EVENT 的类型和处理通用属性
< TRIGGER CODE='EVENT1~EVENT2' EDITING='TRUE' COND='条件' ENABLESTATUS='生效的编辑状态,不指定是所有状态,~分割多个' REQUIREDCOL=”不能为空的字段”/>
触发事件携带的数据;{row:arow,field:aFieldDef}
- CODE 对于Trigger来说是要触发的事件,对于Event来说是要响应的事件,用~分割的多个标识符。触发和响应事件是在编辑主题域中进行的,而定义是在具体的数据集中定义。
- EDITING 只有编辑状态下有效,默认为true ,新建和编辑状态
- COND 触发条件, 由所在数据集计算的条件
- ENABLESTATUS 有效的编辑状态 可以用~分割NEW ,MODIFY,VIEW,NONE ; 默认不指定包含所有状态(服从EDITING设定)
- REQUIREDCOL 必须有值的字段,如果为空不会触发或响应事件,多个可以用~分割
- 事件触发器
- 数据集字段触发的事件
<TRIGGER CODE=’触发的事件’ TYPE='FIELD' COLS="COL1~COL2"
SOURCE='CHANGE~ENTERKEY~ ESCKEY~CLICK~DCLICk~FOCUSE' OP='grid 命令列的VERB值'/>
COLS事件发生事件发送关联的列
SOURCE:
CHANGE : 字段内容变化
CLICK:点击字段
DCLICK: 双击字段
FOCUSE :字段获得焦点
ENTERKEY: 回车键盘事件
ESCKEY :ESC键盘事件
- 数据集事件触发
<TRIGGER TYPE='DATASET' SOURCE='DATACHANGE,ROWCHANGE,ROWDEL,ROWADD'/>
DATACHANGE:数据集内容变化,打开或者新建(表达式计算主记录)
ROWCHANGE :当前行改变 (表达式计算当前数据集行)
ROWDELETE :删除行
ROWADD :添加行
- 编辑事件触发
<TRIGGER TYPE='EDIT' SOURCE='SAVE,NEW,MODIFY,VIEW'/>
SAVE :保存后
NEW 新建后
MODIFY 修改后
VIEW打开记录,保存 后算再次打开
(表达式计算主记录)
举例:修改和新建后 将焦点聚焦到s_employee_ecode 列
<TRIGGER CODE="NEWRC" TYPE="EDIT" SOURCE="NEW~MODIFY"/>
<EVENT CODE="NEWRC" TYPE="DSACTION" ACTION="FOCUSCOL" COL="s_employee_ecode"/>
- 定时任务 TIMMER
<TRIGGER .. TYPE='TIMER' INTERVAL="5"/>
INTERVAL 事件间隔 单位为秒
- 按钮列点击 BUTTON 列
< TRIGGER TYPE='BUTTON' BUTTONCOL=''>
<ITEM CODE='' NAME=''/> 如果设定了为下拉按钮
<ITEM CODE='' NAME=''/> 如果设定了为下拉按钮
… …
</ TRIGGER >
数据集某个列可以定义为BUTTON,通过点击BUTTON或者下拉项目触发事件
BUTTONCOL按钮列的名称
ITEM 多个,如果存在 按钮为下拉按钮,EVENT 下拉项触发的事件,NAME 显示的菜单内容。
(表达式计算按钮所在记录)
举例: 按钮添加记录
<TRIGGER COND="lockstatus=='1' and estatus =='1' "
ENABLESTATUS="2~3" EDITING="FALSE" CODE="ADDRC"
TYPE="BUTTON" BUTTONCOL="xstatus">
<ITEM CODE="SETRC" NAME='修改'/>
<ITEM CODE="AUDIT" NAME='审核'/>
</TRIGGER>
<EVENT EDITING="FALSE" CODE="ADDRC" TYPE="COMMAND">
<COMMAND ERI="" OP="edtNEW" IDEXP=""/>
</EVENT>
<EVENT EDITING="FALSE" CODE="SETRC" TYPE="COMMAND">
<COMMAND ERI="" OP="edtMODIFY" IDEXP=""/>
</EVENT>
<EVENT EDITING="FALSE" CODE="AUDIT" TYPE="COMMAND">
<COMMAND ERI="..DATA" OP="audit" IDEXP="cgddid"/>
</EVENT>
- 事件的响应
<EVENT CODE=’响应的事件’ TYPE=’’ ACTION='~'/>
CODE:属性是响应的事件 用~分割
ACTION 事件发生后触发的行为
事件响应的条件表达式的数据是数据集格式的当前行。
- 各AGENT内部事件响应
事件响应一般用于具体的环境中,如RFID 事件响应, POSTROW,POSTRETRIEVE,POSTEFDIT,SPLITER 都必须定义事件响应者,这里一般不需要指定类型。
- 编辑行为。
NEWROW 新增记录(非主数据集) , FOCUSE 到某列 ,删除行
<EVENT TYPE='DSACTION' ACTION='FOCUSCOL/DELETEROW/INSERTROW/ADDROW' COL=''>
<FIELDVALUE CODE='' VALUE='EXP'/>
</EVENT>
操做对应数据行
FOCUSCOL 聚焦列 COL:focus 对应的列
DELETEROW 删除行
INSERTROW 插入行
ADDROW 添加行
FIELDVALUE 设置字段的值, CODE 字段名 VALUE 值表达式。
- 主题域命令序列,同时可以执行多个命令
保存主实体,新建子实体, 其他主题域的命令实体操作,单据打印,审核,锁定等
<EVENT TYPE=’COMMAND’ />
<COMMAND ERI=’’ OP=’’ IDEXP=’’/>
<COMMAND ERI=’’ OP=’’ IDEXP=’’/>
ERI: 如果没有指定为当前主题域,否则会获得主题域执行命令,创建新的或利用通用共享主题域执行命令。
OP:命令动词 ,add,del
IDEXP:执行命令所需的id参数,没有可以不用指定。
需要执行的命令
</EVENT>
举例
<TRIGGER CODE="ADDRC" TYPE="BUTTON" BUTTONCOL="xstatus"/>
<EVENT CODE="ADDRC" TYPE="COMMAND">
<COMMAND ERI="" OP="edtNEW" IDEXP=""/>
</EVENT>
举例2:下拉按钮, 修改,新建和锁定审核。
<TRIGGER COND="lockstatus=='0' and estatus =='1' " ENABLESTATUS="2~3" EDITING="FALSE" CODE="ADDRC" TYPE="BUTTON" BUTTONCOL="xstatus">
<ITEM CODE="SETRC" NAME='修改'/>
<ITEM CODE="AUDIT" NAME='锁定并审核'/>
</TRIGGER>
<EVENT EDITING="FALSE" CODE="ADDRC" TYPE="COMMAND">
<COMMAND ERI="" OP="edtNEW" IDEXP=""/>
</EVENT>
<EVENT EDITING="FALSE" CODE="SETRC" TYPE="COMMAND">
<COMMAND ERI="" OP="edtMODIFY" IDEXP=""/>
</EVENT>
<EVENT EDITING="FALSE" CODE="AUDIT" TYPE="COMMAND">
<COMMAND ERI="..DATA" OP="lock" IDEXP="cgddid"/>
<COMMAND ERI="..DATA" OP="audit" IDEXP="cgddid"/>
</EVENT>
举例3:单据打印
<TRIGGER COND="" ENABLESTATUS="2~3" EDITING="FALSE" CODE="PRINT" TYPE="BUTTON" BUTTONCOL="xstatus"/>
<EVENT EDITING="FALSE" CODE="PRINT" TYPE="COMMAND">
<COMMAND ERI="..DATA" OP="print" IDEXP="cgddid"/>
</EVENT>
- 子编辑的操作。 包括焦点或者,主题域命令。(todo)
- 结算支付(todo)
用于执行编辑命令(只能执行本主题命令),例如新建,保存。修改,刷新等。
触发条件,字段内容被修改,修改后的那内容不为空。
<FIELDCOMMANDS>
字段的值输入后执行的命令
<FIELD CODE="s_employee_employeeidcode" COMMAND="edtSave~edtNew"/>
CODE: 被监视的字段值
COMMAND : 执行的菜单命令,本例中,输入的列的内容后首先保存数据,然后再新建记录。
</FIELDCOMMANDS>
举例
<FIELDCOMMANDS>
<FIELD CODE="tranmemo" COMMAND="edtSave~edtNew"/>
</FIELDCOMMANDS>
<ATTRIBUTE TYPE="ED" PROGID="PPDomainEditReqSingle" SVRERI="_PP.EDT.SVREDT" RELEASE="0~0~0" USERVERSION="1">
<MENU MENUERI="..GMTBALL" MENUACTION="DEFAULT"/>
<OPTION SAVEANDNEW="TRUE"/>
这个标记能够让录入界面保存后直接执行新建功能,这样可以实现通过F6 一键保存和新建。
<DATASETS>
- RFID 动作触发
见RFID的使用部分
举例 点击Grid命令 设置字段值
<OBJECT TYPE="COL" CODE="ywgjs" LABEL="公斤数" VISIBLE="TRUE" READONLY="FALSE" X="0" Y="0" HEIGHT="60" WIDTH="58"/>
<OBJECT TYPE="CMD" CODE="sfcq" LABEL="操作" VISIBLE="TRUE" READONLY="FALSE" X="0" Y="0" HEIGHT="60" WIDTH="94">
<COMMAND TEXT="出清" VERB="cq" VALIDEXP="isEdting()" REQUIREID="TRUE"/>
</OBJECT>
<OBJECT TYPE="COL" CODE="cyps" LABEL="差异匹数" VISIBLE="TRUE" READONLY="TRUE" X="0" Y="0" HEIGHT="60" WIDTH="75"/>
<TRIGGER EDITING='TRUE' CODE="cq" TYPE="FIELD" COLS="sfcq" SOURCE="CLICK" OP="cq"/>
<EVENT TYPE="DSACTION" CODE="cq" ACTION="" COL="sfcq">
<FIELDVALUE CODE="bpps" VALUE="0"/>
</EVENT>
Created with the Personal Edition of HelpNDoc: Generate EPub eBooks with ease