Установка значения по умолчанию в LightSwitch

У меня есть требование для предварительной установки поля на последнее введенное значение. Я сохраняю значение Save() в статике, а затем я хотел бы установить это значение в поле при следующем создании новой формы ввода.

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

Как установить значение поля?


person ILovePaperTowels    schedule 11.09.2011    source источник


Ответы (1)


Вы должны установить значение по умолчанию в событии Created в таблице данных. Захватите последнее значение в событии Changed — это зафиксирует каждое изменение, которое текущий пользователь вносит в поле. Вот пример использования объекта под названием «Виджет», который устанавливает цену по умолчанию на последнюю цену, введенную пользователем:

public partial class Widget
{
    private static decimal LastWidgetPrice;

    partial void Widget_Created()
    {
        Price = LastWidgetPrice;
    }

    partial void Price_Changed()
    {
        LastWidgetPrice = Price;
    }
}

Обратите внимание, что вы не можете зафиксировать значение в событиях Inserting или Updating, поскольку эти события происходят на сервере, а событие Created происходит на клиенте. Поскольку событие Changed происходит в клиентском коде, мы можем использовать это событие для захвата последнего введенного значения.

События Created и Changed можно создать с помощью раскрывающегося списка WriteCode в конструкторе сущностей (т. е. в конструкторе таблиц).

person Paul Keister    schedule 11.09.2011
comment
Да, но как? Я пытался использовать this.DataWorkspace.Application.XYZ = LastValue; и я получаю исключения. - person ILovePaperTowels; 11.09.2011
comment
Извини за это! Вчера вечером я торопился и не просмотрел свой ответ. Я исправил решение и включил пример кода. Пожалуйста, дайте мне знать, если это все еще не работает для вас. - person Paul Keister; 12.09.2011
comment
Спасибо Павел, но хотелось бы сделать это на экране, а не виджете. Я попробовал это на виджете, но на экране все отображается серым цветом (отключено). - person ILovePaperTowels; 12.09.2011
comment
Похоже, когда я добавляю этот код в виджет, я больше не могу добавлять новые элементы, используя любой тип экрана. - person ILovePaperTowels; 12.09.2011
comment
Это отлично работает для меня в простом тестовом проекте. Возможно, у вас есть какой-то код на экране, который вызывает проблемы. Лучший способ проверить это — быстро создать другой экран и посмотреть, работает ли ваш код значения по умолчанию. Кстати, добавление кода на экраны должно быть последним средством при разработке LightSwitch. Обычно намного эффективнее добавлять код в таблицы данных. - person Paul Keister; 12.09.2011
comment
Я добавил несколько других экранов, и результат тот же, за исключением экрана «Список и сведения». Добавление кода в виджет заработало (используя единственный рабочий экран) - person ILovePaperTowels; 12.09.2011