0

ボタンを押すだけでサーバー ハンドラを呼び出してグリッド内の要素を更新する、非常に複雑なスクリプトを作成しました。

コードの再利用と一貫した動作のために、グリッドの最初の描画中にそのサーバー ハンドラーを直接呼び出したいと考えています。

ボタンをクリックしてサーバーハンドラーが呼び出されると、予想されるすべてのウィジェットが利用可能になり、e.parameter.widget などでクエリを実行できます。

関数を直接呼び出してパネル変数に渡すと、e の値は 'AbsolutePanel' になります。

パネル全体とそれに含まれるすべてのウィジェットを関数に渡す addCallbackElement の方法をエミュレートできる方法はありますか?

または、スクリプトの開始時にサーバー ハンドラーを自動的に起動する方法はありますか?

以下の構文エラーはご容赦ください。500 行のコードを適切なビットに切り詰めました。

ありがとう

トニー

function doGet() {
  var app = UiApp.createApplication();

  var mainPanel = app.createAbsolutePanel();

  var monthsAbbr = ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.'];

  var Dates = Array();
  var period = 5;
  var dateHidden = Array();
  var dayOfMonth = new Date(((period * 28) + 15887) * 86400000);
  var dateString = '';
  var dayOfWeek = 0;
  for (var i=0; i<84; i++) {
     dateString = dayOfMonth.getDate() + ' ' + monthsAbbr[dayOfMonth.getMonth()] + ' ' + (dayOfMonth.getFullYear() - 2000);
    Dates [i] = dateString;
    dateHidden[i] = app.createHidden('dates'+i, dateString).setId('dates'+i);
    mainPanel.add(dateHidden[i]);
    dayOfMonth = new Date(dayOfMonth.getTime() + 86400000);
 }

 var buttonReset = app.createButton('Reset').setId('buttonReset');

 var handlerChange = app.createServerHandler('myHandlerChange');
 handlerChange.addCallbackElement(mainPanel);

 mainPanel.add(buttonReset.addChangeHandler(handlerChange));

 app.add(mainPanel);

 myHandlerChange(mainPanel);

 return app;
}


function myHandlerChange(e) {
var app = UiApp.getActiveApplication();
Logger.log('Here are the widgets passed into the function: ' + Utilities.jsonStringify(e));

return app;
 }
4

2 に答える 2

0

checkBox( setVisible(false)) を使用して、必要なときにユーザーの操作なしでイベントをトリガーできます。次のドキュメントを参照しください。 "

そのような実装のフォーラムにはいくつかの例があります: hereまたはhere

于 2013-10-31T08:15:29.320 に答える