如何在Suitelet表单中添加List/Record字段?
嘿,我之前在开发Suitelet的时候也遇到过这个困惑,其实NetSuite里的List/Record字段在Suitelet中是通过SELECT类型字段配合selectType属性来实现的,给你整理了完整的实现方法和代码示例,一步一步来:
在Suitelet表单中添加List/Record字段的实现指南
核心原理
NetSuite的Suitelet并没有直接叫"List/Record"的字段类型,这类字段本质是配置了特定数据源的SELECT字段,通过指定selectType属性来关联对应的记录类型(比如客户、供应商)或者自定义列表。
完整代码示例
下面是一个2.x版本的Suitelet示例,包含添加记录类型字段和自定义列表字段的两种场景:
/** * @NApiVersion 2.x * @NScriptType Suitelet */ define(['N/ui/serverWidget'], function(serverWidget) { function onRequest(context) { // 1. 创建基础表单 var form = serverWidget.createForm({ title: 'List/Record字段测试表单' }); // 2. 添加关联客户记录的List/Record字段 var customerField = form.addField({ id: 'custpage_selected_customer', type: serverWidget.FieldType.SELECT, label: '选择客户' }); // 关键配置:指定关联的记录类型 customerField.selectType = 'customer'; // 可选:设置字段为必填项 customerField.isMandatory = true; // 可选:设置默认选中的客户内部ID customerField.defaultValue = 456; // 替换成你的客户内部ID // 3. 添加关联自定义列表的List/Record字段 var customListField = form.addField({ id: 'custpage_custom_list', type: serverWidget.FieldType.SELECT, label: '自定义列表选项' }); // 关键配置:指定自定义列表的ID(格式为customlist_xxx) customListField.selectType = 'customlist_my_test_list'; // 替换成你的自定义列表ID // 4. 添加提交按钮并返回表单 form.addSubmitButton({ label: '提交表单' }); context.response.writePage(form); } return { onRequest: onRequest }; });
关键细节说明
- 如何获取正确的
selectType值:- 对于标准记录类型(如客户、供应商),直接用记录的内部标识,比如
customer、vendor、item,可以在NetSuite的记录URL中找到(例如客户列表页URL包含type=customer)。 - 对于自定义列表,需要用自定义列表的ID,格式为
customlist_xxx,可以在自定义列表的编辑页面URL中找到(URL参数id=customlist_xxx中的xxx部分)。
- 对于标准记录类型(如客户、供应商),直接用记录的内部标识,比如
- 其他常用配置:
- 设置
displaySize调整字段显示宽度:customerField.displaySize = 30; - 设置
helpText添加字段提示:customerField.helpText = '请从下拉列表中选择对应的客户'; - 如果需要过滤选项,可以使用
addSelectOption手动添加选项,或者结合N/search模块动态加载过滤后的选项。
- 设置
注意事项
- 确保你的Suitelet脚本有对应记录/自定义列表的访问权限,否则字段可能无法正常加载选项。
- 如果你使用的是1.x版本的Suitelet,写法会略有不同,但核心逻辑也是通过
SELECT字段关联数据源,不过更推荐使用2.x版本的API。
内容的提问来源于stack exchange,提问作者ahomsher
相关产品推荐
相关产品推荐

