这里是一个可能的解决方法与客户端的处理程序:(测试)
我个人觉得它更容易和更清晰的使用,而不必通过ID来获得他们的widget创建变量......几行代码来写,但更容易阅读;-)
function checkboxes() {
var range = SpreadsheetApp.getActiveSpreadsheet();
var sheet = range.getSheetId();
var app = UiApp.createApplication().setTitle('Title').setWidth(200).setHeight(150);
var grid = app.createGrid(4, 3).setCellPadding(5).setCellSpacing(5);
//One
var one = app.createCheckBox().setName('One');
grid.setWidget(0, 0, app.createLabel('One').setId('One'));
grid.setWidget(0, 1, one);
//Two
var two = app.createCheckBox().setName('Two')
grid.setWidget(1, 0, app.createLabel('Two').setId('Two'));
grid.setWidget(1, 1, two);
//three
var three = app.createCheckBox().setName('Three')
grid.setWidget(2, 0, app.createLabel('Three').setId('Three'));
grid.setWidget(2, 1, three);
//...
var r1 = app.createRadioButton('radio').setHTML('All');
var r2 = app.createRadioButton('radio').setHTML('None');
grid.setWidget(3, 0, r1)
grid.setWidget(3, 1, r2)
var Chandler1 = app.createClientHandler().forTargets(one,two,three).setValue(true)
r1.addClickHandler(Chandler1)
var Chandler2 = app.createClientHandler().forTargets(one,two,three).setValue(false)
r2.addClickHandler(Chandler2)
app.add(grid)
var doc = SpreadsheetApp.getActive()
doc.show(app)
}
编辑:以下恩里克的评论(很聪明!感谢)在这里是一个“全复选框”版本的作品就好;-)
function checkboxes2() {
var range = SpreadsheetApp.getActiveSpreadsheet();
var sheet = range.getSheetId();
var app = UiApp.createApplication().setTitle('checkBoxes test').setWidth(200).setHeight(150);
var grid = app.createGrid(4, 3).setCellPadding(5).setCellSpacing(5);
var one = app.createCheckBox().setName('One');
grid.setWidget(0, 0, app.createLabel('One').setId('One'));
grid.setWidget(0, 1, one);
var two = app.createCheckBox().setName('Two')
grid.setWidget(1, 0, app.createLabel('Two').setId('Two'));
grid.setWidget(1, 1, two);
var allP = app.createVerticalPanel()
var allA = app.createCheckBox().setName('allA');
var allB = app.createCheckBox().setName('allB').setVisible(false);
var allP = app.createVerticalPanel().add(allA).add(allB);
grid.setWidget(2, 0, app.createLabel('All').setId('all'));
grid.setWidget(2, 1, allP);
var ChandlerA = app.createClientHandler().forTargets(one,two,allB).setValue(true).forTargets(allB).setVisible(true).forEventSource().setVisible(false);
allA.addClickHandler(ChandlerA)
var ChandlerB = app.createClientHandler().forTargets(one,two,allA).setValue(false).forTargets(allA).setVisible(true).forEventSource().setVisible(false);
allB.addClickHandler(ChandlerB)
app.add(grid)
var doc = SpreadsheetApp.getActive()
doc.show(app)
}
恩里克,忘记我的评论,我没有看到它必须'取消'以及...我删除了我的答案。 – 2012-07-19 19:30:10
,并提出了一种解决方法,而不是:-) – 2012-07-19 19:56:10