这是一个演示我遇到的问题的脚本(在这里在线测试)
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 只有一个项目并且只显示一个项目(我在一个应用程序中遇到这种情况,它使用弹出窗口显示文件夹内容,同时调整列表大小以适应其内容,有时我可以在一个文件夹中只有一个文件)
除非我将 ListBox 3 更改setVisibleItemCount
为 2 或更多...
我用来调整列表大小的代码就像这样:
...
ODlist.setVisibleItemCount(numItem > 6 ? 6 : numItem > 1 ? numItem : 2)
...
而且我真的更愿意将最后一个数字设置为 1,它看起来会很好 ;-) 但我不能。
任何解决方法的想法?
编辑:现在我发现 using lb3.addMouseOverHandler(Handler);
是一个可用的解决方案,但是当多个项目可见时,此处理程序会导致一些问题......我宁愿找到更优雅的东西。