ここに私が抱えている問題を示すスクリプトがあります(ここでオンラインでテストしてください)
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);
が使用可能なソリューションであることがわかりましたが、このハンドラーは、複数のアイテムが表示されている場合にいくつかの問題を引き起こします...もっとエレガントなものを見つけたいです。