Создайте экран, который может редактировать и добавлять записи в приложении Lightswitch.

Я следовал этому руководству от Microsoft, и оно работало фантастически, пока я не обновился до бета-версии 2.

http://msdn.microsoft.com/en-us/lightswitch/Video/ff945359

Дело в том, что при использовании так называемого «элемента данных», который не заполнен данными, создается исключение.

Итак, вопрос: кто-нибудь, кто использует новый экран, также использует его для редактирования и сталкивался с этой проблемой, и как вы это исправили?

Возможный сценарий:

  • Запустите новый проект Beta 2 и создайте отдельные новые экраны и экраны редактирования (что означает двойную работу).
  • Как-нибудь найдите исправление, связав элемент данных (не используемый в новом режиме) с существующей записью (было бы уродливым исправлением)
  • Найдите другой способ создать новый экран/экран редактирования.
  • Вариант 4?

person Ralf de Kleine    schedule 02.05.2012    source источник


Ответы (2)


Я использую модифицированную версию исходного кода Бет (сначала в B2, затем в RTM, и я почти уверен, что она работает в бета-версии V2), потому что иногда возникала ошибка (но я не помню, при каких условиях больше, так как я использую свой код уже довольно давно).

Самый первый код, который сделала доступной Бет, использовал экран «Редактировать данные» (но, может быть, это был B1?), а затем она выпустила обновленную версию, которая использует экран «Добавить новые данные» (видео, на которое вы указали, было для B2) .

Если вам все еще не удалось заставить его работать, я могу указать вам на код, который я использую.

person Yann Duran    schedule 04.05.2012
comment
Привет Янн, спасибо за ваш ответ. Однако я нашел решение своей проблемы (см. Мой ответ). - person Ralf de Kleine; 04.05.2012
comment
О, хорошо, я думал, что это код, который не работает. Рад, что ты разобрался. - person Yann Duran; 05.05.2012

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

partial void CreateNewOrEditJob_InitializeDataWorkspace(List<IDataService> saveChangesTo)
        {
            Job selectedJob;

            if (SelectedJobId.HasValue)
            {
                int selectedId = (int)SelectedJobId;
                selectedJob = DataWorkspace.ApplicationData.Jobs.Where(j => j.Id.Equals(selectedId)).FirstOrDefault();
            }
            else
            {
                selectedJob = new Job();
            }
            this.JobProperty = selectedJob;
    }

Приведенный выше пример используется для экрана, который используется либо для редактирования существующего объекта «Задание», либо для создания нового. «SelectedJobId» — это локальное свойство экрана, для параметра Is установлено значение true, а для параметра Is Required — значение false.


Кредиты принадлежат Полу Паттерсону Quercus Solutions Inc (MVP)

person Ralf de Kleine    schedule 03.05.2012