PXTimeSpanLong (Format = TimeSpanFormatType. ????) не дает правильный вывод / ввод - PullRequest
1 голос
/ 04 июля 2019

Добрый день. Сейчас я использую [PXDBTimeSpan], но я ограничен только 24 часами.Мне нужно, чтобы иметь возможность установить значение часа выше 100 часов.пример: 126: 11 (ЧЧЧ: мм; сто двадцать шесть часов.)

Я изучил [PXTimeSpanLong ()], где я тестировал: * Format = TimeSpanFormatType.LongHoursMinutes * Я пытался использовать маску ввода* попытался использовать только PXTimeSpanLong и установить для режима времени значение true.

Я просмотрел вики для получения дополнительной информации о TimeSpanFormatType, но типы перечисления не были задокументированы.Примечание: я использую Acumatica ERP для создания этого поля

Ответы [ 2 ]

1 голос
/ 04 июля 2019

Страницы Acumatica используют формат дней, часов и минут при привязке к полю DateTime, поэтому вам придется следовать этому шаблону с этим типом данных:

    <px:PXMaskEdit ID="edTimeReaction" runat="server" DataField="TimeReaction" 
                   InputMask="### d\ays ## hrs ## mins" EmptyChar="0" Text="0" />

На экране это выглядит так: enter image description here

Чтобы получить желаемый формат, вам нужно выбрать другой тип данных, например String, который будет принимать любой текстовый формат. Затем вы добавляете поле в качестве MaskEdit элемента управления редактора полей и применяете желаемый InputMask.

Добавление элемента управления MaskEdit: enter image description here

Установка свойств MaskEdit InputMask: enter image description here

Тип данных String позволит сохранить любой произвольный формат, например 3 цифры: enter image description here

0 голосов
/ 08 июля 2019

Мы использовали PXDBTimeSpanLong с форматом LongHoursMinutes.На самом деле у нас есть поля, где формат выбирается с помощью настройки.LongHoursMinutes должно работать в вашем случае, если вы используете PXMaskEdit для своей страницы.

В поле INT для вашего DAC:

[PXDBTimeSpanLong(Format = TimeSpanFormatType.LongHoursMinutes)] 

Затем на странице для вашего поля:

<px:PXMaskEdit ID="edMyTimeField" runat="server" DataField="MyTimeField" />

Пример, показывающий поле PXDBTimeSpanLong слева и то же значение с использованием простого несвязанного поля PXInt справа для отображения значения БД:

enter image description here

Полные поля ЦАП, использованные в примере:

#region MyTimeField
public abstract class myTimeField : PX.Data.BQL.BqlInt.Field<myTimeField> { }

protected Int32? _MyTimeField;

[PXDBTimeSpanLong(Format = TimeSpanFormatType.LongHoursMinutes)]
[PXDefault(TypeCode.Int32, "0")]
[PXUIField(DisplayName = "LongHoursMinutesField")]
public virtual Int32? MyTimeField
{
    get
    {
        return this._MyTimeField;
    }
    set
    {
        this._MyTimeField = value;
    }
}
#endregion
#region MyTimeFieldDB

[PXInt]
[PXUIField(DisplayName = "DB Value")]
public virtual Int32? MyTimeFieldDB
{
    get
    {
        return this._MyTimeField;
    }
}
#endregion
...