這裏是一個可能的解決方法與客戶端的處理程序:(測試)
我個人覺得它更容易和更清晰的使用,而不必通過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