1

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

[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”,以防用户在未来选择一个日期(不允许),我需要将选择器值返回到调用回调之前的值。如果我在设计这个结果时错过了一个技巧,我很乐意走另一条路——谢谢!

4

1 回答 1

0

事实证明,您需要指定您希望出现在回调中的任何对象的名称,我只设置了 Id,这花了我几个小时 - 文档可能不是 Google 的强项:)

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

希望这对其他人有帮助

于 2013-09-06T16:44:04.850 回答