Пересчитывать значение переменной, как только изменяется один из элементов, необходимых для ее вычисления.

У меня есть следующая проблема:

У меня есть веб-панель «Бронирование», на которой пользователь указывает значения для &beginDate и &endDate (редактирование). Переменные &beginDate и &endDate используются в качестве условий для сетки.

У меня также есть переменная &days (только для чтения), которая определена в правилах как разница между этими двумя (&days=&endDate-beginDate), и у нее двоякое назначение:

  1. Для расчета скорости бронирования - это работает просто отлично

  2. Для отображения пользователю. - это не работает так хорошо

Моя проблема заключается в том, что если пользователь обновляет значение &endDate или &beginDate, значение &days не обновляется до тех пор, пока сетка не будет загружена или обновлена. Мне нужно, чтобы это изменилось, как только любой из них.

Прежде чем обратиться за помощью, я попробовал следующее:

  1. Установка notifycontextchange=true для &beginDate и &endDate и создание двух событий TrackContext:

`

Event TrackContext(&beginDate)
&days=&endDate-&beginDate
endevent

Event TrackContext(&endDate)
&days=&endDate-&beginDate
endevent
  1. Назначьте его значение в стартовом событии

  2. Назначьте его значение для событий &beginDate.click и &endDate.click.

Я уже просмотрел эти форумы и нашел ответ, в котором предлагалось использовать событие ControlValueChanged. Проблема в том, что я запускаю Genexus X Ev1, и этого события здесь не существует (или, по крайней мере, оно не привязано к переменной).

Есть ли другое решение? Я чувствую, что мне не хватает чего-то действительно простого :(

Я работаю с HTML 4.01 Transitional и средой .NET.


person Velasco Cristian    schedule 15.05.2015    source источник
comment
Можем ли мы увидеть код, пожалуйста? Прозаическое описание мне трудно понять.   -  person Morten Jensen    schedule 15.05.2015


Ответы (1)


Начиная с Genexus X EV1 upg 3, вы можете запускать события в браузере (не нужно обновлять сетку) SAC 30737.

Попробуйте добавить события IsValid:

Event &beginDate.IsValid
    &days = &endDate - beginDate
EndEvent
Event &endDate.IsValid
    &days = &endDate - beginDate
EndEvent
person pmoleri    schedule 15.05.2015