Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NetSuite-从下拉列表中删除项目_Netsuite_Suitescript - Fatal编程技术网

NetSuite-从下拉列表中删除项目

NetSuite-从下拉列表中删除项目,netsuite,suitescript,Netsuite,Suitescript,在NetSuite项目窗体上,我想删除下拉列表“Sub Item of”字段名parent中的一些项目,该字段当前显示所有NetSuite项目 我尝试在加载之前创建一个用户事件脚本,并使用API nlapiRemoveSelectOption,但是NetSuite会引发一个错误,通知该方法不存在。当尝试在客户端使用API时,它返回一个错误,通知该方法在客户端不可用。方法的调用如下所示: nlapiRemoveSelectOption('parent', '1'); // 1 is the in

在NetSuite项目窗体上,我想删除下拉列表“Sub Item of”字段名parent中的一些项目,该字段当前显示所有NetSuite项目

我尝试在加载之前创建一个用户事件脚本,并使用API nlapiRemoveSelectOption,但是NetSuite会引发一个错误,通知该方法不存在。当尝试在客户端使用API时,它返回一个错误,通知该方法在客户端不可用。方法的调用如下所示:

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
}