这是按钮回调的输出,您可以看到它返回对选取器控件的引用,该控件包含在它们都被添加到的网格控件中:
[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”,以防用户在未来选择一个日期(不允许),我需要将选择器值返回到调用回调之前的值。如果我在设计这个结果时错过了一个技巧,我很乐意走另一条路——谢谢!