以下是按钮回调的输出,您可以看到它返回对选择器控件的引用,该控件包含在它们都被添加到的网格控件中:
[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'用于选择器,以防用户在将来选择日期(不允许),我需要将选择器值返回到回调之前的值被调用。如果我错过了设计这个结果的技巧,我很高兴再走另一条路 - 谢谢!答案 0 :(得分:0)
原来你需要指定你希望在回调中出现的任何对象的名称,我只设置了ID并且花了我几个小时 - 文档可能不是Google的强项:)
var oTxtOldDate = app.createTextBox().setId('pickerOldDate').setName('pickerOldDate').setWidth('50');
希望这有助于其他人