2017-02-18 48 views
0

我用suitelet構建了一個表單,它有一個子列表,一個下拉列表和一個按鈕。用戶在子列表上勾選一些選項後,按下按鈕,選定的項目將在其他地方通過休息發送。在2.x API中將變量從suitelet傳遞給clientscript?

Suitelet:

@NApiVersion 2.x 
    *@NScriptType Suitelet 
    */ 
define(['N/ui/serverWidget', 'N/search', 'N/https', 'N/record'], 
    function(serverWidget, search, https, record) { 
    function onRequest(context) { 
    if (context.request.method === 'GET') { 
     var form = serverWidget.createForm({ ... }); 
     form.clientScriptModulePath = 'path/to/client/script'; 
     // code to build a sublist, add a button and write page 
     } return { 
     onRequest: onRequest 
     }; 
     }); 

然後,我clientscript是一樣的東西:

* @NApiVersion 2.x 
* @NScriptType ClientScript 
*/ 
define(
    [ 'N/currentRecord', 'N/https' ], 
    function(currentRecord, https) { 
     functionSendRequest(sublist //the sublist that I want to get from the suitelet) 
     { 
     //code to build json string and send http request 
     } return { 
     saveRecord: test 
     } 
    }); 

現在,花了一些關於這個小時後,A N/currentRecord來到了我的注意(I」 m noobie與netsuite),它似乎對我來說是一個問題解決者,因爲它檢索當前在客戶端上下文中活動的記錄。它適用於下拉菜單,並且有一個方法getSublist(options),儘管它返回只有getColumn()方法的record.Sublist。因此,它不會真的爲我工作。那麼,一旦按下按鈕,是否有辦法將sublist參數傳遞給suitelet中的clientscript?

回答

1

解決你的問題,你可以使用getSublistValue從currentRecord這樣的:

var currentRec = currentRecord.get(); 
var numLines = objRecord.getLineCount({ 
    sublistId: 'item' 
}); 
var sublistFieldValue = currentRec.getSublistValue({ 
    sublistId: 'item', 
    fieldId: 'item', 
    line: 3 
}); 

如果你真的想從Suitelet東西傳給你得設置你的按鈕,這樣,客戶方的功能:

var someTextToPassToTheClientscript = 'The Suitelet send its regards'; 
form.addButton({ 
    id : 'custpage_some_button', 
    label : 'MyButton', 
    functionName : 'functionSendRequest("' + someTextToPassToTheClientscript + '")' 
}); 

,然後讓clientscript收到這樣的:

/* 
* @NApiVersion 2.x 
* @NScriptType ClientScript 
*/ 
define(
    ['N/currentRecord', 'N/https'], 
    function (currentRecord, https) { 
    functionSendRequest(textReceivedFromSuitelet) { 
     //code to build json string and send http request 
    } 
    return { 
     functionSendRequest : functionSendRequest 
    } 
}); 
+0

嘿,謝謝喲你非常樂意迴應!感謝它,我會試試看。好奇,有沒有辦法讓我用按鈕上的functionName選項來調用suitelet中的另一個函數?我無法得到它的工作,另一個人在stackoverflow建議使用客戶端腳本。但是,從客戶端發送休息呼叫似乎不是一個好方法。 – user2187935

+0

通過POST將客戶端的數據傳遞到您的suitelet,使用POST主體中的一個變量來確定操作的類型並讓您的Suitelet調用Restlet。 –

+0

太棒了,謝謝,這對我很有用! – user2187935