NetSuite-从下拉列表中删除项目
在NetSuite项目窗体上,我想删除下拉列表“Sub Item of”字段名parent中的一些项目,该字段当前显示所有NetSuite项目 我尝试在加载之前创建一个用户事件脚本,并使用API nlapiRemoveSelectOption,但是NetSuite会引发一个错误,通知该方法不存在。当尝试在客户端使用API时,它返回一个错误,通知该方法在客户端不可用。方法的调用如下所示:NetSuite-从下拉列表中删除项目,netsuite,suitescript,Netsuite,Suitescript,在NetSuite项目窗体上,我想删除下拉列表“Sub Item of”字段名parent中的一些项目,该字段当前显示所有NetSuite项目 我尝试在加载之前创建一个用户事件脚本,并使用API nlapiRemoveSelectOption,但是NetSuite会引发一个错误,通知该方法不存在。当尝试在客户端使用API时,它返回一个错误,通知该方法在客户端不可用。方法的调用如下所示: nlapiRemoveSelectOption('parent', '1'); // 1 is the in
nlapiRemoveSelectOption('parent', '1'); // 1 is the internal Id
在研究了脚本源代码之后,我能够从列表中删除项目的唯一方法是在客户端使用名为deleteOneOption的非文档化方法
getDropdown(window.document.getElementsByName('inpt_parent')[0]).deleteOneOption('1');
但是,这不应该是最好的方法,因为它没有文档记录,而且我直接访问DOM对象,这在将来的版本中可能不起作用
有人知道从该字段中删除某些项的更好方法吗
谢谢。人们确实会求助于这种事情。 其他选择包括: 在目标字段上使用筛选来限制下拉选项 如果这是用于项目选择,请使用自定义子列表来管理显示的项目 如果上述两项工作都不是我通常所做的,而是隐藏表单上的自然下拉列表,并添加我可以更好控制的自定义下拉列表。然后在客户端脚本中,我从自定义下拉列表中获取更改,并将这些更改应用于隐藏字段。两种情况: 如果在加载表单时知道下拉内容,则可以在表单上创建列表作为新的选择字段,并将其填充到加载前用户事件脚本中。 如果您需要对表单上选择的其他内容做出反应,而Netsuite的内置源代码不起作用,则可以使用客户端脚本根据表单事件更改下拉列表的内容。
谢谢你的建议,它真的帮了我的忙。我最终采用了以下方法: 在加载事件之前创建一个用户事件脚本,以编程方式添加字段,这样我就可以更好地控制列表,并且可以删除或插入选项。在这种情况下,API nlapiRemoveSelectOption起作用 创建客户端脚本字段更改事件,将数据从新自定义字段复制到原始字段。此外,在page init上,脚本将值设置为added字段 隐藏自定义窗体上的原始字段。 谢谢大家!
function beforeLoad(type, form, request) {
var fld = form.addField('custpage_item', 'select', 'Subitem Of', 'item', null);
// Inserts the field after the "Subitem Of" original
form.insertField(fld, 'parent');
nlapiRemoveSelectOption('custpage_item', '1'); // internal id to remove
}