UiApp createServerHandler参数参数

时间:2013-09-06 15:19:33

标签: javascript google-apps-script

以下是按钮回调的输出,您可以看到它返回对选择器控件的引用,该控件包含在它们都被添加到的网格控件中:

[13-09-06 21:59:07:575 ICT] {clientY=83, clientX=100, eventType=click, ctrl=false, meta=false, source=Today, button=1, alt=false, picker=Sat Sep 07 00:00:00 GMT+07:00 2013, screenY=399, screenX=649, y=16, shift=false, x=28}

以下是用于解决所有问题的代码:

var app = UiApp.createApplication().setWidth(600).setHeight(400);
var submitHandler = app.createServerHandler('eventFormData_Save_');
var dateBtnsHandler = app.createServerHandler('eventDateBtns_');

// create panels
var vPanel = app.createVerticalPanel().setStyleAttributes(css.body);
var sPanel = app.createScrollPanel().setId('sPanel');

// add vPanel to sPanel
sPanel.add(vPanel);

var dToday = getWholeDay(new Date());  

var oDateGrid = app.createGrid(3,3);
var oBtnPrev = app.createButton('< Prev').setId('Prev');
var oBtnNext = app.createButton('Next >').setId('Next');
var oBtnToday = app.createButton('Today').setId('Today').setWidth('100');

var oTxtOldDate = app.createTextBox().setId('pickerOldDate').setWidth('50');    
var oPickerLabel = app.createLabel('Selected Date:',false).setId('pickerLabel');        
var oPicker = app.createDateBox().setId("picker").setName("picker").setWidth('100')
.setFormat(UiApp.DateTimeFormat.DATE_SHORT)
.setValue(dToday).setFocus(true);


oDateGrid.setWidget(0,1,oPickerLabel);
oDateGrid.setWidget(1,0,oBtnPrev).setWidget(1,1,oPicker).setWidget(1,2,oBtnNext);
oDateGrid.setWidget(2,0,oTxtOldDate).setWidget(2,1,oBtnToday);

dateBtnsHandler.addCallbackElement(oDateGrid);
//dateBtnsHandler.addCallbackElement(oTxtOldDate);//tried adding the txtbox explicitly to no effect

oBtnPrev.addClickHandler(outgoingClientHandler).addClickHandler(dateBtnsHandler);        
oBtnNext.addClickHandler(outgoingClientHandler).addClickHandler(dateBtnsHandler);        
oBtnToday.addClickHandler(outgoingClientHandler).addClickHandler(dateBtnsHandler);       
oPicker.addValueChangeHandler(outgoingClientHandler).addValueChangeHandler(dateBtnsHandler);
oTxtOldDate.addValueChangeHandler(dateBtnsHandler);

app.add(oDateGrid);

它不是所有的代码,因为它有点摇晃并且不应该是相关的,而有些内容与后面的元素有关 - 只是让我知道它是否不清楚!

尝试在与按钮相同的回调函数中引用pickerOldDate时出现问题

{source=picker, eventType=valuechange, picker=Sat Sep 07 00:00:00 GMT+07:00 2013}

所以我不确定应该感到惊讶的是,选择器位于按钮回调参数中,还是pickerOldDate不在选择器回调参数中。有什么建议吗?

顺便说一句:关键点(如果不清楚的话)是保留一个'OldValue'用于选择器,以防用户在将来选择日期(不允许),我需要将选择器值返回到回调之前的值被调用。如果我错过了设计这个结果的技巧,我很高兴再走另一条路 - 谢谢!

1 个答案:

答案 0 :(得分:0)

原来你需要指定你希望在回调中出现的任何对象的名称,我只设置了ID并且花了我几个小时 - 文档可能不是Google的强项:)

var oTxtOldDate = app.createTextBox().setId('pickerOldDate').setName('pickerOldDate').setWidth('50');  

希望这有助于其他人