2015-09-05 88 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上,腳本將該值設置爲添加的字段。

  • 隱藏自定義表單上的原始字段。

謝謝!