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

NetSuite SS 2.0 如何为Suitelet的Inline Editor Sublist填充数据

SS 2.0 Suitelet Inline Editor 子列表加载时填充数据实现方法

核心逻辑:创建好Inline Editor子列表、定义完子列表字段后,先查询自定义记录中存储的历史子列表数据,遍历结果按行调用子列表的setSublistValue方法赋值即可,不需要额外客户端脚本配合,服务端Suitelet阶段就能直接完成填充。

实现步骤

  • 第一步:引入依赖模块,创建Suitelet表单和Inline Editor类型子列表
    参考代码:
    /**
     * @NApiVersion 2.x
     * @NScriptType Suitelet
     */
    define(['N/ui/serverWidget', 'N/search', 'N/runtime'], function(serverWidget, search, runtime) {
      function onRequest(context) {
        if (context.request.method === 'GET') {
          // 创建表单
          const form = serverWidget.createForm({
            title: '自定义数据录入页'
          });
          // 其他主表字段定义逻辑此处省略...
    
          // 创建Inline Editor子列表
          const dataSublist = form.addSublist({
            id: 'custpage_history_data_sublist',
            label: '历史行数据',
            type: serverWidget.SublistType.INLINEEDITOR
          });
          // 定义子列表字段,可按需调整字段类型、关联源等参数
          dataSublist.addField({
            id: 'custpage_sublist_field1',
            label: '字段1',
            type: serverWidget.FieldType.TEXT
          });
          dataSublist.addField({
            id: 'custpage_sublist_field2',
            label: '字段2',
            type: serverWidget.FieldType.INTEGER
          });
    
  • 第二步:查询自定义记录中存储的历史子列表数据
    参考代码:
    // 查询存储子列表数据的自定义记录,替换为你自己的自定义记录ID和查询条件
          const historyData = [];
          search.create({
            type: 'customrecord_your_sublist_data',
            filters: [
              // 此处添加筛选条件,比如关联当前用户、关联上次录入的主记录ID等
              ['custrecord_relate_user', 'anyof', runtime.getCurrentUser().id]
            ],
            columns: ['custrecord_field1_value', 'custrecord_field2_value']
          }).run().each(function(result) {
            historyData.push({
              field1: result.getValue('custrecord_field1_value'),
              field2: result.getValue('custrecord_field2_value')
            });
            return true;
          });
    
  • 第三步:遍历历史数据,给子列表逐行赋值
    注意行索引从0开始计数,直接调用子列表的setSublistValue方法即可:
    // 遍历数据填充子列表
          historyData.forEach(function(item, index) {
            dataSublist.setSublistValue({
              id: 'custpage_sublist_field1',
              line: index,
              value: item.field1
            });
            dataSublist.setSublistValue({
              id: 'custpage_sublist_field2',
              line: index,
              value: item.field2
            });
          });
    
          // 最后返回表单
          context.response.writePage(form);
        } else {
          // 表单提交逻辑处理此处省略...
        }
      }
      return {
        onRequest: onRequest
      };
    });
    

注意事项:

  1. 不要尝试用字段的setDefaultValue方法填充子列表行数据,该方法对Inline Editor子列表的行级别赋值无效,必须用setSublistValue逐行赋值
  2. 如果查询到的历史数据为空,子列表会默认显示一行空行,符合NetSuite原生交互逻辑
  3. 子列表字段的ID必须和setSublistValue中传入的ID完全一致,区分大小写

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:15:01