You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JavaScript向APEX交互式网格编程添加记录?

在APEX交互式网格中通过JavaScript添加新记录

嘿,你找对路子了!APEX的交互式网格(Interactive Grid)的Model对象确实提供了专门的方法来创建和添加新记录,正好能帮你完成把选中行插入另一个网格底层表的需求。我来一步步给你讲清楚怎么实现:

核心方法:createRecord()

你已经知道怎么获取网格的Model了,添加记录的关键就是调用Model的createRecord()函数——它可以根据你传入的字段数据创建一条新记录,之后会自动把这条记录纳入Model管理,最后你只需要同步到视图和数据库就行。

完整实现步骤

假设你已经拿到了源网格(grid1)中选中的记录,接下来只需要对目标网格(grid2)做以下操作:

  1. 获取目标网格的Model对象
    和你获取源网格Model的方式一致,先拿到目标网格的jQuery对象,再提取Model:

    // 替换成你目标网格的实际ID
    var targetIg = $("#grid2").interactiveGrid("getViews", "grid");
    var targetModel = targetIg.model;
    
  2. 循环处理选中的源记录,创建新记录
    遍历你已经获取的选中记录,提取需要的字段值,然后用createRecord()生成新记录:

    // 假设你已经拿到了源网格的选中记录集合
    selectedRecords.forEach(function(sourceRecord) {
        // 构造新记录的字段数据,键名要和目标网格的底层表列名一致
        var newRecordData = {
            // 替换成你的实际字段映射关系
            EMP_ID: sourceRecord.getValue("SOURCE_EMP_ID"),
            EMP_NAME: sourceRecord.getValue("SOURCE_EMP_NAME"),
            DEPT_NAME: sourceRecord.getValue("SOURCE_DEPT_NAME")
        };
    
        // 创建新记录,createRecord会自动把记录添加到Model中
        var newRecord = targetModel.createRecord(newRecordData);
        // 如果你担心自动添加失效,可以显式调用add方法(可选)
        // targetModel.add(newRecord);
    });
    
  3. 刷新目标网格视图
    创建记录后,需要刷新网格视图才能看到新添加的内容:

    targetIg.viewModel.refresh();
    
  4. 可选:提交到底层数据库
    如果你希望立即把新记录保存到数据库,可以调用网格的save()方法:

    $("#grid2").interactiveGrid("save");
    

关键注意事项

  • 字段名匹配:newRecordData中的键名必须和目标网格底层表的列名完全一致,或者和Model中定义的字段名一致(通常就是列名)。
  • 字段类型正确:确保传入的字段值类型和目标列匹配,比如日期字段要传Date对象,数字字段传数值类型,避免字符串类型导致的保存错误。
  • 必填字段处理:如果目标网格有必填字段,必须在newRecordData中为这些字段赋值,否则创建记录或保存时会报错。
  • 权限验证:确保当前用户有目标表的插入权限,否则保存操作会失败。

完整示例代码

把所有步骤整合起来,就是这样的:

// 1. 获取源网格的选中记录
var sourceIg = $("#grid1").interactiveGrid("getViews", "grid");
var selectedRecords = sourceIg.getSelectedRecords();

// 2. 获取目标网格的Model
var targetIg = $("#grid2").interactiveGrid("getViews", "grid");
var targetModel = targetIg.model;

// 3. 循环创建新记录
selectedRecords.forEach(function(sourceRecord) {
    var newRecordData = {
        // 替换为你的实际字段映射
        EMPLOYEE_ID: sourceRecord.getValue("EMPLOYEE_ID"),
        FIRST_NAME: sourceRecord.getValue("FIRST_NAME"),
        LAST_NAME: sourceRecord.getValue("LAST_NAME"),
        EMAIL: sourceRecord.getValue("EMAIL")
    };

    targetModel.createRecord(newRecordData);
});

// 4. 刷新视图并保存(可选)
targetIg.viewModel.refresh();
// $("#grid2").interactiveGrid("save");

内容的提问来源于stack exchange,提问作者Coding Duchess

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:56:22