Динамический выбор даты SAPUI5 с начальным значением focuseddatevalue в sap.ui.table

#javascript #sapui5

#javascript #sapui5

Вопрос:

Например, у меня есть таблица, состоящая из дат начала и окончания. Как я мог бы динамически (оптимизировать способ) устанавливать начальное значение focuseddatevalue, чтобы каждый раз, когда пользователь открывает datepicker, выбранная им предыдущая дата была сфокусированной датой.

введите описание изображения здесь

Я уже пробовал следующее, но ни одно из них не сработало:

  1. Вызов события navigate для установки начального значения focuseddatevalue, но это вызывается после отображения всплывающего окна. Таким образом, новое начальное значение focuseddatevalue не вступает в силу при первом нажатии.
  2. Привязка > невозможна, поскольку она принимает объект Date.
  3. Присвоение идентификаторов элементам управления и вызов по 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.