栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Oracle ApEx复选框可在选中/未选中时操纵其他值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Oracle ApEx复选框可在选中/未选中时操纵其他值

EMP表上的示例:

select apex_item.checkbox2(p_idx => 1, p_value => empno, p_attributes => '') empselection,apex_item.text(2, ename) empname,empno,enamefrom emp

将一个类添加到复选框项。这使得使用jQuery轻松定位成为可能。

创建一个新的动态操作,例如“复选框单击”。
事件 :单击
选择 类型:jQuery选择器
jQuery 选择器:(

.check_select
这是我们添加到sql中复选框的类)
条件 :Javascript表达式
$(this.triggeringElement).prop('checked')


条件是选中复选框元素以查看其是否已选中。prop()测试元素的属性,在这种情况下返回true或false。设置为true时,将触发true动作,否则将触发false动作。

真实操作:
操作 :执行Javascript代码
代码

$(this.triggeringElement).closest("tr").find("td[headers='EMPNAME']input").val('test');

错误操作:
操作 :执行Javascript代码
代码

$(this.triggeringElement).closest("tr").find("td[headers='EMPNAME']input").val('');

两者都没有选择类型,因为我们需要将目标定位在与单击复选框相同的行中。根本没有办法通过顶点选择可能性做到这一点。通过标题将列作为目标,不要忘记将目标作为td内部的输入(或:

textarea
!)

创建动态动作后,返回。在“ 高级”下, 将“ 事件作用域”
更改为

Live
。这对于解释分页是必要的。如果您不更改此设置,则分页后不会将任何操作绑定到元素。

然后编辑正确和错误操作,然后 取消选中

Fire on Page Load

现在考虑您的日期:
由于您希望sysdate为默认值,因此建议您向页面添加一个隐藏项目,例如P9_DEF_DATE。作为 ,请使用 PLSQL表达式
,然后使用

SYSDATE

然后,您可以将该字段的值用作默认值,例如:

$(this.triggeringElement).closest("tr").find("td[headers='EMPNAME'] input").val($v('P9_DEF_DATE'));

最后要注意的:消隐通过VAL的值:使用

val('')
引号!根据我的经验,这不会起作用。

一个ajax流程的示例:
假设我要更新所检查员工的COMM列。

在报表页面上创建一个新流程,为其命名足够简单,并且不要在其中添加空格。例如,我正在运行“ update_emp”。

update empset comm = apex_application.g_x02where empno = apex_application.g_x01;

向动态动作中添加另一个true动作,键入“ Execute Javascript Code”。

$.post('wwv_flow.show',        {"p_request"      : 'APPLICATION_PROCESS=update_emp',        "p_flow_id"      : $v('pFlowId'), //app id        "p_flow_step_id" : $v('pFlowStepId'), //page id        "p_instance"     : $v('pInstance'), //session id        "x01" : $(this.triggeringElement).val(),        "x02" : '88', //just a bogus value to demonstrate        },        function(data){        }        );

此javascript将发布到该页面,以该

update_emp
过程为目标。
x01
并且
x02
是一种“临时”的变量。它们存在,因此我们不必一直提交页面项目即可将值发布到会话状态。它们是apex_application程序包的一部分。
所以在这里,我
x01
用来存储empno(复选框的值,因此
this.triggeringElement
),并
x02
传递给Commision的值。我在这里对其进行了硬编码,但是您当然可以得到任何价值。

$.post
是发布到页面的jQuery方法。

当您学习动态操作或在论坛上拖网时,您可能会遇到另一种方法发布到页面上,即

htmldb_Get
,该方法内置在apex
javascript文件中。我不使用它,因为它不是真正的Ajax(异步),而是Sjax(同步),并且 在我看来
还不够透明。我相信其中有
GetAsync
一部分,这是一件好事,但是,您几乎不会在任何示例中看到它的使用。现在
get.get();
看起来很容易,您可以用3行代码(而不是我的js)实现相同的结果,认为这是实现真正的ajax调用的一种好习惯。您可能不时地等待完成一个过程,并意识到
htmldb_Get
应用程序中的所有调用并不像您认为的那样有趣。

使用此报告设置,事情也变得更加复杂。使用页面项目,您可以采取另一种方法:可以执行plsql代码块来代替执行javascript块。在这里,您可以指定要提交到会话状态的项目(以便可以在plsql块中使用它们),并指定要由该plsql块设置其值的项目。(sql块在服务器端运行,这意味着引用的项需要在会话状态中具有其值)。我建议也玩这个。
话虽如此,您也可以使用报告操作来执行此操作,但是您需要设置一些假项目来临时保存值,然后将其提交到会话状态。再说一次,我不喜欢那个,所以我没有去(那个是另一个“
imo”)。

本质上,打开浏览器检查工具,例如firebug。它使您可以检查在页面上进行的Ajax调用,并提供了一种很好的方法来研究此问题。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/634913.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号