#javascript #sapui5
#javascript #sapui5
Вопрос:
Например, у меня есть таблица, состоящая из дат начала и окончания. Как я мог бы динамически (оптимизировать способ) устанавливать начальное значение focuseddatevalue, чтобы каждый раз, когда пользователь открывает datepicker, выбранная им предыдущая дата была сфокусированной датой.
Я уже пробовал следующее, но ни одно из них не сработало:
- Вызов события navigate для установки начального значения focuseddatevalue, но это вызывается после отображения всплывающего окна. Таким образом, новое начальное значение focuseddatevalue не вступает в силу при первом нажатии.
- Привязка > невозможна, поскольку она принимает объект Date.
- Присвоение идентификаторов элементам управления и вызов по Id > тоже не работает.
Я думал о циклическом просмотре таблицы и присвоении каждой совокупности datepicker значения InitialFocusedDateValue каждый раз, когда выбирается дата, но, очевидно, это дрянной подход. Надеюсь, есть оптимальный способ решения этой проблемы.
Ответ №1:
Если вы хотите установить начальное значение focuseddatevalue для начальной даты в зависимости от даты окончания предыдущей строки:
- Добавьте событие onChange в указатель даты
- Получить значение и индекс строки текущей измененной даты.
- Проверьте, есть ли строка index 1, если да, получите содержимое (элементы управления) и присвоите InitialFocusedDateValue значение из события.
Если вам нужно установить дату окончания на основе даты начала:
- Добавьте событие onChange в указатель даты начала
- Получить значение при обратном вызове события
- Добавить, назначить его:
event.getSource().getParent().getContent()[indexOfEndDateControl].setInitialFocusedDateValue(dateValue)
Комментарии:
1. Первый сценарий не сработает, если ваша текущая строка превышает количество видимых строк, поскольку getIndex вернет реальный индекс строки. Итак, если я нахожусь в строке 35 и проверяю table.GetRows[](35), он вернет значение undefined, поскольку у меня есть только видимое количество строк, равное 10.