2017-02-18 2 views
0

スイートリストを持つフォームを作成しました。サブリスト、ドロップダウン、ボタンがあります。ユーザがサブリスト上のいくつかの選択をチェックした後、ボタンが押され、選択された項目が他の場所で休憩を介して送られる。スイートレットから2.x APIの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 
     } 
    }); 

、この上の時間数を過ごした後、N/currentRecordは(私は」私の注意に来ましたmnoobie with netsuite)、それはクライアント側のコンテキストで現在アクティブなレコードを取得するので、私の問題解決のように思えるでしょう。ドロップダウンメニューではうまく動作し、メソッドgetSublist(options)を持っていますが、getColumn()メソッドだけを持つrecord.Sublistを返します。したがって、それは本当に私のために働くことはありません。だから、一度ボタンを押すとスイートリストからクライアントスクリプトにサブリストパラメータを渡す方法はありますか?あなたはこのようcurrentRecordからgetSublistValueを使用することができますあなたの問題を解決するために

答えて

1

:あなたは本当にあなたがお奨めクライアント側の機能にSuiteletから何かを渡したい場合は

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

はあなたのボタンをこのように設定します。

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オプションを使ってスイートレット内の別の関数を呼び出す方法はありますか?私はそれを働かせることができませんでしたし、stackoverflow上の別の男は、クライアント側のスクリプトを使用するように示唆した。しかし、クライアント側からの残りの呼び出しを送信することは良いアプローチのようには見えません。 – user2187935

+0

POSTを使用してclientcriptからsuiteletにデータを渡し、POST本体の変数の1つを使用して操作のタイプを識別し、スイートレットがRestletを呼び出すようにします。 –

+0

素晴らしい、ありがとう、それは私のために働いた! – user2187935

関連する問題