我想根据特定的条件动态地向tabPanel添加选项卡。
有时用户会有3个选项卡,另一个时候他(或另一个用户)可能有多达10个选项卡。另外,每次添加选项卡的顺序也可能不同。
所以我希望能够通过id而不是索引来识别选项卡。
在将多个选项卡添加到tabPanel之后,您可以通过
tabPanel.selectTab(2); // Will select third tab of the tabPanel
使用selectionHandler,我可以识别所选选项卡的tabPanel和索引
var onSelectHandler = app.createServerHandler('onSelectHandler');
tabPanel.addSelectionHandler(onSelectHandler)
...
function onSelectHandler(e)
{
var source = e.parameter.source; // Id of the tabPanel
var indexTab = e.parameter[source]; // Index of the tab selected
}
但是,我无法找到如何获得所选选项卡的 id ,也无法按id选择选项卡。
除了隐藏字段和其他技巧之外,是否有一种通过Id标识选项卡的方法?
发布于 2014-07-17 11:55:26
单个选项卡没有Ids,只有TabPanels有Ids。一个TabPanel有多个Tabs。
但是,您可以通过TabPanel ()和JSON传递有关setTag的任意信息。
例如,类似这样的事情:
function doGet() {
var app = UiApp.createApplication();
var clickHandler = app.createServerHandler('myClickHandler');
var tab = app.createTabPanel().setId('asdf');
var fooLabel = app.createLabel('I am foo.').setId('fooId');
var barLabel = app.createLabel('I am bar.').setId('barId');
var tag = [];
tab.add(fooLabel, 'Foo');
tag.push(fooLabel.getId());
tab.add(barLabel, 'Bar');
tag.push(barLabel.getId());
tab.addSelectionHandler(clickHandler);
tab.setTag(JSON.stringify(tag));
app.add(tab);
return app;
}
function myClickHandler(e) {
var app = UiApp.getActiveApplication();
var tag = JSON.parse(e.parameter[e.parameter.source + '_tag']);
var id = tag[e.parameter[e.parameter.source]];
Logger.log(id);
return app;
}
单击结果选项卡Foo和Bar,然后检查您的日志。
但是,请注意,每次单击标题时都会发生这种情况,即使它已经被选中。请谨慎使用。
不过,我很好奇:您打算如何处理回调中的这些信息?
您是否期望即时更新面板的内容,并将当前数据作为选项卡公开?还是在那个时候用小部件填充面板?
https://stackoverflow.com/questions/24753109
复制相似问题