Oracle apex 顶点行选择器第2部分
这是5天前发布的“APEX行选择器”的后续内容 问题是从交互式网格中收集多个值。从优秀的链接后提供我能够做到这一点。但是,项目的下一部分是打开“编辑”对话框页面并更新多个值 我将以下代码添加到交互式网格的属性中:Oracle apex 顶点行选择器第2部分,oracle-apex,Oracle Apex,这是5天前发布的“APEX行选择器”的后续内容 问题是从交互式网格中收集多个值。从优秀的链接后提供我能够做到这一点。但是,项目的下一部分是打开“编辑”对话框页面并更新多个值 我将以下代码添加到交互式网格的属性中: function (config) { var $ = apex.jQuery, toolbarData = $.apex.interactiveGrid.copyDefaultToolbar(), toolbarGroup = toolbarData.toolbarFi
function (config)
{
var $ = apex.jQuery,
toolbarData = $.apex.interactiveGrid.copyDefaultToolbar(),
toolbarGroup = toolbarData.toolbarFind("actions3");
toolbarGroup.controls.push(
{
type: "BUTTON",
action: "updateCar",
label: "Edit Selected Cars",
hot: true,
});
config.toolbarData = toolbarData;
config.initActions = function (actions)
{
// Defining the action for activate button
actions.add(
{
name: "updateCar",
label: "Edit Selected Cars",
action: updateCar
});
}
function updateCar(event, focusElement)
{
var i, records, model, record,
view = apex.region("ig_car").widget().interactiveGrid("getCurrentView");
var vid = "";
model = view.model;
records = view.getSelectedRecords();
if (records.length > 0)
{
for (i = 0; i < records.length; i++)
{
record = records[i];
alert("Under Development " + record[1]);
vid = vid + record[1] + "||";
apex.item("P18_CAR").setValue(vid);
// need to open next page here and pass parameters
}
}
}
return config;
}
函数(配置)
{
var$=apex.jQuery,
toolbarData=$.apex.interactiveGrid.copyDefaultToolbar(),
toolbarGroup=toolbarData.toolbarFind(“操作3”);
toolbarGroup.controls.push(
{
键入:“按钮”,
行动:“updateCar”,
标签:“编辑所选车辆”,
热:是的,
});
config.toolbarData=toolbarData;
config.initActions=函数(操作)
{
//定义激活按钮的操作
actions.add(
{
名称:“updateCar”,
标签:“编辑所选车辆”,
操作:updateCar
});
}
函数updateCar(事件、焦点元素)
{
var i,记录,模型,记录,
视图=apex.region(“ig_car”).widget().interactiveGrid(“getCurrentView”);
var vid=“”;
model=view.model;
records=view.getSelectedRecords();
如果(记录长度>0)
{
对于(i=0;i
我需要知道如何打开表单并将参数值传递给oracle更新脚本
谢谢你能提供的任何帮助。我确实找到了一些帖子,但我真的需要一个好的例子。我什么都试过了,都没有用 有多种方法可以做到这一点。这里有一个方法,也许其他人会提供一个更有效的选择 APEX中导航的JavaScript选项记录如下: 由于您试图打开一个单独的页面,您可能希望使用apex.navigation.dialog,这是apex在从报表、按钮等打开模式页面时自动使用的 但是,如文档中所述,出于安全目的,必须在服务器端生成导航的URL。您需要一个动态URL(页面呈现时不知道该URL),因此需要一个变通方法来生成它。一旦你有了URL,导航到它就很容易了。那么,如何获取URL呢?阿贾克斯 创建一个Ajax进程来生成URL
apex\u item.get\u url
来获取url,这是apex\u util.prepare\u url
的替代方法。我还使用apex\ujson
为响应客户端发出json
此外,对apex_application.g_x01的引用也很重要,因为这将包含调用页面中的选定值。您将在下一步中看到这是如何设置的
使用JavaScript打开URL
在调用页的函数和全局变量声明属性中输入以下代码:
function openFormPage(ids) {
apex.server.process(
'GET_FORM_URL',
{
x01: ids.join(':')
},
{
success: function (data) {
var funcBody = data.url.replace(/^"javascript:/, '').replace(/\"$/,'');
new Function(funcBody).call(window);
},
error: function (jqXHR, textStatus, errorThrown) {
console.error(errorThrown);
// handle error
}
}
);
}
在本例中,我使用调用服务器端PL/SQL进程。请注意,我正在将ids.join(“:”)
的值传递给x01
。该值将在PL/SQL代码中作为apex\u application.g\u x01
访问。您可以使用其他项,也可以将冒号分隔的值字符串传递给一个项(正如我所做的)
返回给客户端的URL将不是标准URL,而是包含该URL的JavaScript片段。您需要删除前导部分和尾随部分,并使用剩下的部分在JavaScript中生成动态函数
这通常是不赞成的,但我相信在这种情况下它足够安全,因为我知道我可以相信来自进程调用的响应不是恶意JavaScript代码
添加安全检查强>
因为您正在创建一种动态方式来生成URL以打开第3页(或任何目标页面),所以需要确保模式页面受到保护。在该页面上,创建一个Before头进程来验证P3_ITEM_NAME的值。如果用户不能访问这些值,则抛出异常
function openFormPage(ids) {
apex.server.process(
'GET_FORM_URL',
{
x01: ids.join(':')
},
{
success: function (data) {
var funcBody = data.url.replace(/^"javascript:/, '').replace(/\"$/,'');
new Function(funcBody).call(window);
},
error: function (jqXHR, textStatus, errorThrown) {
console.error(errorThrown);
// handle error
}
}
);
}