0

ここに私が抱えている問題を示すスクリプトがあります(ここでオンラインでテストしてください

var lbArray1 = ['item1', 'item2', 'item3', 'item4', 'item5'];

function doGet(e){
  var app = UiApp.createApplication();
  var vPanel = app.createVerticalPanel().setStyleAttribute('padding','20px')
  app.add(vPanel);
  var lb1 = app.createListBox().setName('lb1').setId('lb1').setVisibleItemCount(1);
  var lb2 = app.createListBox().setName('lb2').setId('lb2').setVisibleItemCount(4);
  var lb3 = app.createListBox().setName('lb3').setId('lb3').setVisibleItemCount(1);
  lb3.addItem(lbArray1[0]);
    for(var i in lbArray1){
      lb1.addItem(lbArray1[i]);
      lb2.addItem(lbArray1[i]);
      }
  var msg = app.createLabel('waiting for trigger').setId('msg');
  vPanel.add(lb1).add(lb2).add(lb3).add(msg);
  var Handler = app.createServerHandler('test').addCallbackElement(vPanel);
  lb1.addChangeHandler(Handler);
  lb2.addClickHandler(Handler);
  lb3.addClickHandler(Handler);// I tried different trigger modes without success
  return app;
}

function test(e){
  var app = UiApp.getActiveApplication();
  var msg = app.getElementById('msg');
  msg.setText('triggered by '+e.parameter.source)
  return app;
}

ListBox 3にはアイテムが1つしかなく、アイテムが1つしか表示されません(ポップアップを使用してフォルダーのコンテンツを表示し、リストのサイズをそのコンテンツに適応させるアプリでこの状況が発生し、フォルダーにファイルが1つしかない場合があります)

ListBox 3 は、setVisibleItemCountを 2 以上に変更しない限り、ハンドラーをトリガーしません...

リストサイズを調整するために使用するコードは、次のようになります。

...
ODlist.setVisibleItemCount(numItem > 6 ? 6 : numItem > 1 ? numItem : 2)
...

そして、私は本当に最後の数字を1に設定することを好みます.それはとても見栄えがするでしょう;-)しかし、私はできません.

回避策はありますか?


編集 : 今のところ、 using lb3.addMouseOverHandler(Handler);が使用可能なソリューションであることがわかりましたが、このハンドラーは、複数のアイテムが表示されている場合にいくつかの問題を引き起こします...もっとエレガントなものを見つけたいです。

4

1 に答える 1

1

これが望まない場合は理解していますが、それが問題に対する私の解決策でした. 「スプレッドシートを選択してください」のようなユーザープロンプトであるリスト項目を追加しただけです。私のコードから:

var files = DocsList.getFolder("Incoming Product Data").getFiles();
fileChooser.addItem("Select a Spreadsheet"); 
 for (var i = 0; i < files.length; i++) {
    fileChooser.addItem(files[i].getId());

私がしなければならなかった唯一のことは、if ステートメントをトリガーに組み込むことでした。これにより、誰かがファイルを選択した後、「スプレッドシートを選択してください」というプロンプトに戻り、処理しようとしてエラーがスローされなくなりました。実際の fileId としてのプロンプト。

私ができる最善のこと。

于 2013-04-21T18:46:14.160 に答える