Как определить правильный способ обновления поля ЦАП? - PullRequest
1 голос
/ 28 мая 2019

У меня возникают проблемы с определением, когда использовать свойства e.Row или cache.SetValue / SetValueExt при обновлении значения записи.В курсе T200 есть часть из pdf, которая гласит:

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

ShipmentLine line = e.Row as ShipmentLine;
...
line.Description

Чтобы обновить поле, определенное до текущего поля в классе доступа к данным, используйте SetValueExtМетод <> ():

sender.SetValueExt<ShipmentLine.ProductID>(e.Row, GiftCardID);

В каких случаях они ссылаются на слова «до» и «после»?Если моя декларация поля ЦАП имеет следующий порядок:

Field1 {get;set;}
Field2 {get;set;}
Field3 {get;set;}

Имеют ли они буквальное значение, если я нахожусь в "Field2.FieldUpdated ()", мне нужно обновить Field1 и Field3 следующим образом?

sender.SetValueExt<ShipmentLine.Field1>(e.Row, "X");
line.Field3 = "X";

Кроме того, существуют ли жесткие правила относительно того, когда использовать какой метод?Т.е. если в событии RowUpdated используется «X», если в событии FieldUpdated - «Y».

1 Ответ

3 голосов
/ 28 мая 2019

Вы встретите в основном три типа назначения:

 1. record.Field = "value"
 2. cache.SetValue<T>
 3. cache.SetValueExt<T>

Метод 1 и 2 по сути одинаковы.Они присваивают значение без поднятия событий.Практическое отличие состоит в том, что с помощью метода 2 вы можете избежать приведения.

// 1. With cast
ShipmentLine line = e.Row as ShipmentLine;

if (line != null)
{
    line.Description = "value";
}

// 2. Without cast
sender.SetValue<ShipmentLine.description>(e.Row, "value");

SetValueExt следует использовать, когда вы хотите, чтобы назначение вызывало события FieldUpdated.Многие поля пользовательского интерфейса вызывают события, когда пользователь изменяет их значение.Если пользователь изменит количественные поля заказа на продажу, он вызовет события FieldUpdated, которые, в свою очередь, пересчитают общую цену.

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

...