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;
Я использую очень похожую технику для создания строчных "Правка" и "Удалить" записей таблицы уровня записи.
НТН