LightSwitch HTML Client сохраняет рассчитанные результаты в новом поле

Я использую Visual Studio 2013 LightSwitch, чтобы попытаться создать приложение HTML. Пытаясь несколько часов заставить "вычисляемый" столбец / поле отображаться в HTML-клиенте, я понял, что это невозможно. Я думал о создании триггера для стрельбы по столу, но он не будет выдвинут, когда я опубликую приложение. Итак, без использования клиента RIA, как лучше рассчитать, используя два или более полей источника данных и хранить в другом? Это может быть вызвано, когда пользователь нажимает кнопку сохранения или даже когда поля содержат данные, которые могут быть вычислены.

Например, Таблица пользователей (до):

First_Name (string)   Last_Name (string)   Stored_Full_Name (string)
John                  User                 NULL
Jane                  Doe                  NULL

Когда пользователь нажимает кнопку сохранения, или когда first_name и last_name не равны NULL, "Last_Name, First_Name" сохраняется как один столбец в столбце Stored_Full_Name в той же таблице.

Например, Таблица пользователей (после):

First_Name (string)   Last_Name (string)   Stored_Full_Name (string)
John                  User                 User, John
Jane                  Doe                  Doe, Jane

Я предполагаю, что та же самая техника могла использоваться, чтобы вычислить затраты или другие пункты?

Любой пример кода будет принята с благодарностью.

2 ответа

Для простых вычисляемых свойств вы всегда можете создавать функции на прототипе Users. Это объясняется в этом сообщении в блоге: http://lobfactory.wordpress.com/2013/05/03/computed-fields-in-the-html5-client/

Это довольно легко. Создайте строковую переменную с именем "FullName" с отображаемым текстом "Full Name". Отредактируйте метод "создания" экрана и присвойте требуемое значение переменной в JavaScript. - в приведенном выше примере вы хотели бы что-то вроде следующего:

screen.FullName = screen.Last_Name.value + ", " + screen.First_name.value;

Затем перетащите переменную с вкладки данных слева на экран в таблицу "Пользователи".

Возможно, вам потребуется обновить вычисленное значение как часть вашего конвейера сохранения, но метод create() должен запускаться каждый раз, когда экран перерисовывается. Если вы хотите сохранить это значение в столбце NULL в вашей таблице Users, вы можете сделать это, просто присвоив значение поля новому значению, но я не уверен, почему вы будете беспокоиться, так как это нарушает нормализацию вашей таблицы. В функции, где вы предварительно обрабатываете сохраненные изменения на стороне клиента, добавьте следующий код, чтобы сделать это так или иначе:

screen.FullNameTableField = screen.FullName.value;

Я использую очень похожую технику для создания строчных "Правка" и "Удалить" записей таблицы уровня записи.

НТН

Другие вопросы по тегам