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 }; });
注意事项:
- 不要尝试用字段的
setDefaultValue方法填充子列表行数据,该方法对Inline Editor子列表的行级别赋值无效,必须用setSublistValue逐行赋值- 如果查询到的历史数据为空,子列表会默认显示一行空行,符合NetSuite原生交互逻辑
- 子列表字段的ID必须和
setSublistValue中传入的ID完全一致,区分大小写
内容的提问来源于stack exchange,提问作者gstea96
相关产品推荐
相关产品推荐

