SuiteScript STATICLIST子列表切换分页后内容未更新问题
SuiteScript静态子列表自定义Tab下分页不刷新问题
问题表现
- 表单内新增自定义Tab页,在对应Tab下添加
STATICLIST类型子列表 - 子列表写入30条记录,触发NetSuite默认分页逻辑(单页默认展示25条,自动生成分页下拉控件)
- 分页下拉选择「26 to 30 of 30」选项时,子列表内容不刷新,无法展示对应分页的记录
复现代码
const subTab = form.addTab({ id: "custpage_tab_mehmet", label: "MTab", }); const subList = form.addSublist({ id: "custpage_sublist_mehmet", label: "MSublist", tab: "custpage_tab_mehmet", type: ui.SublistType.STATICLIST }); subList.addField({ id: "custpage_column_one", label: "Col 1", type: ui.FieldType.TEXT }) for (let index = 0; index < 30; index++) { subList.setSublistValue({ id: "custpage_column_one", line: index, value: `col1 row${index}` }); }
问题截图

根因说明
这是NetSuite的已知渲染bug:放在非默认激活自定义Tab下的STATICLIST类型子列表,如果不显式声明分页配置,初始化阶段不会绑定分页下拉的切换刷新事件,切页时自然不会更新视图。
修复方案
方案1(推荐,仅需修改服务端beforeLoad脚本)
子列表创建完成后,显式把paginate属性设为true,强制系统绑定分页事件,在原有代码里追加如下配置即可:
// 子列表字段添加完成后追加 subList.setSublistProperty({ paginate: true });
该方案无需额外客户端脚本,适配2021.2之后的所有NetSuite版本,配置后分页切换即可正常联动子列表内容。
方案2(兼容旧版本,搭配客户端脚本)
如果当前NetSuite版本较低,方案1不生效,可以搭配客户端脚本补全事件绑定:
- 新增客户端脚本文件,部署到对应表单
- 在
pageInit生命周期中追加如下监听逻辑:
function pageInit(context) { const currentRec = context.currentRecord; // 监听分页下拉切换事件,手动触发子列表刷新 document.addEventListener('change', (e) => { if (e.target.id === 'custpage_sublist_mehmet_pagelist') { setTimeout(() => { currentRec.getSublist('custpage_sublist_mehmet').refresh(); }, 30); } }); }
内容的提问来源于stack exchange,提问作者Mehmet
相关产品推荐
相关产品推荐

