Так как технологией не предусматривается сценарий, когда какой-либо отдельный столбец AGE доступен только для чтения, то стандартного способа нет.
Однако, есть обходной путь:
- Добавить в детейл вычислимое поле.
- Задать функцию вычисления поля так, чтобы она дублировала столбец, который необходимо сделать только для чтения.
- В E-представление детейла созданное вычислимое поле, снять видимость с оригинального поля.
После перегенерации объектов все будет работать.
Пример
Пусть дан следующий детейл:
Необходимо сделать поле Field2
доступным только для чтения.
Для начала необходимо добавить вычислимое поле в класс:
Затем, настроить представление:
- Добавить вычислимое поле
- Снять видимость со “старого” поля
- Настроить заголовок вычислимого поля
Перегенерировать объекты. После перегенерации надо модифицировать getter
вычислимого поля так, чтобы он возвращал значение поля, которое должно отображаться только для чтения:
[ICSSoft.STORMNET.NotStored()]
[StrLen(255)]
[DataServiceExpression(typeof(ICSSoft.STORMNET.Business.SQLDataService), "Field2")]
public virtual string Field2ReadOnly
{
get
{
// *** Start programmer edit section *** (Side.Field2ReadOnly Get)
return Field2; // Здесь указываем поле.
// *** End programmer edit section *** (Side.Field2ReadOnly Get)
}
set
{
// *** Start programmer edit section *** (Side.Field2ReadOnly Set)
// *** End programmer edit section *** (Side.Field2ReadOnly Set)
}
}
Note:
DataServiceExpression
в данном случае устанавливать не обязательно: при загрузке AGE берется реальное значение, а не StringedView
. Однако, рекомендуется установить и его.После этого AGE будет выглядеть следующим образом: