如何在Suitelet脚本中创建规范的自定义筛选字段?
在Suitelet中创建规范的自定义筛选字段组及字段
要在Suitelet中实现符合NetSuite标准的筛选字段组,不要用普通的select类型字段,应该使用Suitelet表单的FilterGroup和Filter对象来创建,这类组件是专门为数据筛选设计的,能提供和原生筛选一致的交互效果(比如操作符选择、动态选项联动等)。
实现步骤与代码示例
以下是完整的Suitelet脚本示例,演示如何创建筛选组并添加不同类型的筛选字段:
/** * @NApiVersion 2.x * @NScriptType Suitelet */ define(['N/ui/serverWidget'], function(serverWidget) { function onRequest(context) { if (context.request.method === 'GET') { // 创建Suitelet表单 const form = serverWidget.createForm({ title: '自定义筛选示例' }); // 1. 创建筛选字段组 const filterGroup = form.addFilterGroup({ id: 'custpage_filter_group', label: '数据筛选条件' }); // 2. 向筛选组添加各类筛选字段 // 文本筛选(支持包含、等于等操作符) filterGroup.addFilter({ id: 'custpage_filter_text', label: '客户名称', type: serverWidget.FieldType.TEXT, operator: serverWidget.Operator.CONTAINS // 默认操作符 }); // 日期范围筛选(自动提供开始/结束日期输入框) filterGroup.addFilter({ id: 'custpage_filter_date', label: '交易日期', type: serverWidget.FieldType.DATE, operator: serverWidget.Operator.WITHIN }); // 列表筛选(关联自定义记录或系统记录,自动加载选项) filterGroup.addFilter({ id: 'custpage_filter_status', label: '订单状态', type: serverWidget.FieldType.SELECT, source: 'salesorderstatus', // 系统状态记录类型 operator: serverWidget.Operator.EQUALTO }); // 添加提交按钮 form.addSubmitButton({ label: '应用筛选' }); // 输出表单 context.response.writePage(form); } else { // 处理筛选提交后的逻辑(获取筛选值) const requestParams = context.request.parameters; const customerName = requestParams.custpage_filter_text; const dateRange = requestParams.custpage_filter_date; const orderStatus = requestParams.custpage_filter_status; // 这里可以结合Saved Search或自定义逻辑处理筛选后的数据 context.response.write(`筛选条件:客户名称=${customerName},交易日期=${dateRange},订单状态=${orderStatus}`); } } return { onRequest: onRequest }; });
关键说明
- 筛选组与普通字段的区别:
FilterGroup是专门的筛选容器,里面的Filter字段会自动继承NetSuite原生筛选的交互(比如点击字段旁的操作符下拉选择匹配规则),而普通select字段只是单一的下拉输入,没有筛选特有的操作逻辑。 - 操作符设置:通过
operator参数可以指定默认的匹配规则,比如EQUALTO(等于)、CONTAINS(包含)、WITHIN(范围)等,完整的操作符列表可参考NetSuite的serverWidget.Operator枚举。 - 联动数据源:如果筛选字段需要关联系统或自定义记录的选项,设置
source为对应的记录ID即可,无需手动添加选项,会自动同步记录数据。 - 获取筛选值:在POST请求中,通过
context.request.parameters可以获取每个筛选字段的提交值,后续可用于过滤Saved Search结果或自定义数据集。
内容的提问来源于stack exchange,提问作者user15989047
相关产品推荐
相关产品推荐

