2015-09-05 40 views
1

在NetSuite Items窗体上,我想删除当前显示所有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对象直接,这可能不是对未来的版本。

有没有人知道一个更好的方法来删除该领域的一些项目?

谢谢。

回答

1

人们会诉诸这种事情。 其他选项包括:

  • 使用过滤目标字段限制下拉选项
  • 如果这是项目选择使用自定义的子表管理显示
  • 的项目,如果没有上述工作我通常所做的就是隐藏窗体上的自然下拉列表并添加自定义下拉列表,以便更好地控制它。然后在客户端脚本中,我从自定义下拉列表中进行更改并将其应用于隐藏字段。两种情况:
    • 如果您在加载表单时知道下拉内容,则只需将该列表创建为表单上的新选择字段并将其填充到加载前用户事件脚本中。
    • 如果您需要对表单上选定的其他内容做出反应,并且Netsuite的内置采购不起作用,则可以使用客户端脚本基于表单事件更改下拉内容。
1

谢谢你的建议,它真的帮了我。我结束了以下方法:

  • 创建一个用户事件脚本(负载事件之前),将现场编程,让我有在名单更多的控制,我能够删除或插入选项。在API nlapiRemoveSelectOption工作的情况下。

    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 
    } 
    
  • 创建客户端脚本(场Changed事件),以新的自定义字段的数据复制到原来的领域。另外,在页面init上,脚本将该值设置为添加的字段。

  • 隐藏自定义表单上的原始字段。

谢谢!

相关问题