Я пытаюсь создать поле даты MV с помощью выбора даты. Ближайшим, что я смог получить, является использование выбора даты, чтобы сохранить дату в viewScope, затем кнопку Добавить дату в существующее поле «Дата МВ». Он работает (вроде), но кажется, что это очень неудобный способ сделать это. Некоторые искали и не могли найти ничего лучше. Поле, в котором хранятся значения, должно быть доступно для редактирования, чтобы при необходимости можно было удалить значение, но не было гладким. Любые идеи?Создайте многозначное поле даты с помощью datepicker
Редактировать 21 авг 2015 Принимал участие в ответе Павла и части моего решения, но у меня возникли проблемы с набором данных. См. Код ниже - так как он работает нормально и сохраняет список дат в viewScope.vsDates. Если вы удалите // и добавили в строку viewScope.vsNames = tArray; // закомментируем эту строку и запустим тот же процесс, что она не сработает в строке tArray.push (addDate) с сообщением об ошибке «Ошибка при добавлении даты Ошибка вызова метода push (java.util.Date)» на объект типа ' Date [JavaScript Object] '" Так что, как только я вернусь к значениям из WFSMainDoc.getValue (" ExpPayDate "), тип данных изменился, но не уверен, как обойти эту часть.
<xp:panel id="panelAddDates">
Additional Display Dates :
<xp:table>
<xp:tr>
<xp:td valign="top">
<xp:inputText id="AddDate" value="#{viewScope.vsAddDate}">
<xp:dateTimeHelper id="dateTimeHelper3"></xp:dateTimeHelper>
<xp:this.converter>
<xp:convertDateTime type="date" dateStyle="medium">
</xp:convertDateTime>
</xp:this.converter>
</xp:inputText>
</xp:td>
<xp:td valign="top">
<xp:button value="Add to list" id="button2">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="panelAddDates">
<xp:this.action><![CDATA[#{javascript:try{
print("Start Transfer date");
var addDate:NotesDateTime = viewScope.vsAddDate;
print("Got addDate " + addDate);
//var expPayDate = WFSMainDoc.getValue("ExpPayDate");
var expPayDate = viewScope.vsDates;
if (addDate != null){
if (expPayDate == null || expPayDate == ""){
print("expPayDate is null")
var tArray:Array = new Array;
tArray.push(addDate);
//WFSMainDoc.setValue("ExpPayDate" , tArray)
viewScope.vsDates = tArray
print("ExpPayDate in WFSMainDoc = " + WFSMainDoc.getValue("ExpPayDate"))
print("ExpPayDate in viewscope = " + viewScope.vsDates)
}else{
var tArray:Array = new Array;
//tArray = WFSMainDoc.getValue("ExpPayDate");
tArray = viewScope.vsDates;
print("Got tArray = " + tArray.toString());
tArray.push(addDate);
//WFSMainDoc.setValue("ExpPayDate" , tArray);
viewScope.vsNames = tArray; //comment out this line
//print("ExpPayDate in WFSMainDoc = " + WFSMainDoc.getValue("ExpPayDate"));
print("ExpPayDate in viewScope = " + viewScope.vsDates);
}
viewScope.remove("vsAddDate")
print("Done")
}
}catch(e){
print("Error in Add Date " + e.toString())
}}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
</xp:td>
<xp:td valign="top">
<xe:djextListTextBox id="djextListTextBox1"
value="#{WFSMainDoc.ExpPayDate}" multipleSeparator=";">
</xe:djextListTextBox>
</xp:td>
</xp:tr>
</xp:table>
</xp:panel><!-- panelAddDates -->
Павел, видеть мои изменения к первоначальному вопросу выше. Кажется, я сталкиваюсь с проблемой типа данных, но не уверен, как ее решить. –
getValue(), вероятно, получает оболочку SSJS - очевидно, использование DateTime небезопасно. getItemValueDate() может быть тем, что вам нужно. –
Используется повторный контроль, а не текстовый список dojo, который я не мог получить. –