Поиск…


Вступление

В этом разделе вы познакомитесь с различными вариантами, доступными в Acumatica Framework, чтобы создать поля даты и времени в классе доступа к данным (DAC).

Атрибут DateAndTime PX (DB)

Атрибут PXDBDateAndTime и атрибут PXDateAndTime предназначены для работы с полем DAC типа Nullable<DateTime> ( DateTime? ) И хранят в нем дату и время в одном поле:

#region UsrDateAndTime
public abstract class usrDateAndTimeAttribute : IBqlField
{ }

[PXDBDateAndTime(
    DisplayNameDate = "Date Value Part",
    DisplayNameTime = "Time Value Part")]
public DateTime? UsrDateAndTime { get; set; }
#endregion

С точки зрения пользовательского интерфейса для поля, украшенного PXDBDateAndTimeAttribute или PXDateAndTimeAttribute , ожидается, что будут созданы отдельные элементы управления вводами для деталей даты и времени:

введите описание изображения здесь

<px:PXDateTimeEdit runat="server" ID="edUsrDate" DataField="UsrDateAndTime_Date" />
<px:PXDateTimeEdit runat="server" ID="edUsrTime" DataField="UsrDateAndTime_Time" TimeMode="True" />

или отдельные столбцы сетки для ввода и отображения значений даты и времени:

введите описание изображения здесь

<Columns>
    ...
    <px:PXGridColumn DataField="UsrDateAndTime_Date" Width="90px" />
    <px:PXGridColumn DataField="UsrDateAndTime_Time" Width="90px" TimeMode="True" />
    ...
</Columns>

Атрибут PXDBTime

Атрибут PXDBTime предназначен для работы с полем DAC типа Nullable<DateTime> ( DateTime? ) И сохраняет только временную часть без даты внутри поля ЦАП:

#region UsrTime
public abstract class usrTime : IBqlField
{ }

[PXDBTime(DisplayMask = "t", InputMask = "t")]
[PXUIField(DisplayName = "Time Only Value")]
public DateTime? UsrTime { get; set; }
#endregion

В пользовательском интерфейсе для поля, украшенного PXDBTimeAttribute, система создает входное управление, принимающее только значения времени как на форме:

введите описание изображения здесь

<px:PXDateTimeEdit runat="server" ID="edUsrTime" DataField="UsrTime" TimeMode="True" />

и внутри ячейки сетки:

введите описание изображения здесь

<Columns>
    ...
    <px:PXGridColumn DataField="UsrTime" Width="120px" TimeMode="True" />
    ...
</Columns>

Атрибут DateAttribute PX (DB)

Атрибут PXDBDate и атрибут PXDate предназначены для работы с полем DAC типа Nullable<DateTime> ( DateTime? ) И сохранения значения даты с необязательной временной частью внутри одного поля. Wheather PX (DB) DateAttribute следует сэкономить время в дополнение к дате в поле ЦАП, определяется свойством PreserveTime : если для параметра PreserveTime установлено значение True , временная часть значения поля сохраняется, иначе только часть даты сохраняется в Поле ЦАП:

#region UsrDateTime
public abstract class usrDateTime : IBqlField
{ }

[PXDBDate(PreserveTime = true, InputMask = "g")]
[PXUIField(DisplayName = "DateTime Value")]
public DateTime? UsrDateTime { get; set; }
#endregion

#region UsrDate
public abstract class usrDate : IBqlField
{ }

[PXDBDate]
[PXUIField(DisplayName = "Date Value")]
public DateTime? UsrDate { get; set; }
#endregion

В пользовательском интерфейсе для поля, украшенного PXDBDateAttribute или PXDateAttribute, система создает элемент управления вводом, принимающий либо только значения даты, либо значения даты и времени в зависимости от значения свойства PreserveTime . Эта концепция работает точно так же на форме:

введите описание изображения здесь

<px:PXDateTimeEdit runat="server" ID="edUsrDateTime" DataField="UsrDateTime" Size="SM" />
<px:PXDateTimeEdit runat="server" ID="edUsrDate" DataField="UsrDate" />

и внутри ячейки сетки:

введите описание изображения здесь

<Columns>
    ...
    <px:PXGridColumn DataField="UsrDateTime" Width="130px" />
    <px:PXGridColumn DataField="UsrDate" Width="90px" />
    ...
</Columns>

Атрибут PXDBTimeSpan

Атрибут PXDBTimeSpan предназначен для работы с полем DAC типа Nullable<int> ( int? ) И значением времени хранения внутри поля ЦАП в качестве количества минут, прошедших с полуночи:

#region UsrTimeInt
public abstract class usrTimeInt : IBqlField
{ }

[PXDBTimeSpan(DisplayMask = "t", InputMask = "t")]
[PXUIField(DisplayName = "Time Value")]
public int? UsrTimeInt { get; set; }
#endregion

В пользовательском интерфейсе для поля, украшенного PXDBTimeSpanAttribute, система создает раскрывающийся список с интервалом в полчаса как на форме:

введите описание изображения здесь

и внутри ячейки сетки:

<px:PXDateTimeEdit runat="server" ID="edUsrTimeInt" DataField="UsrTimeInt" TimeMode="true" />

введите описание изображения здесь

<px:PXGridColumn DataField="UsrTimeInt" Width="90px" TimeMode="true" />

Атрибут PXTimeList

Атрибут PXTimeList предназначен для работы с полем DAC типа Nullable<int> ( int? ) И сохранения значения временного интервала внутри поля ЦАП в виде нескольких минут:

#region UsrTimeSpan
public abstract class usrTimeSpan : IBqlField
{ }

[PXDBInt]
[PXTimeList]
[PXUIField(DisplayName = "Time Span")]
public int? UsrTimeSpan { get; set; }
#endregion

В пользовательском интерфейсе для поля, украшенного PXTimeListAttribute, система создает раскрывающийся список с 30-минутными интервальными значениями как на форме:

введите описание изображения здесь

<px:PXTimeSpan ID="edUsrTimeSpan" runat="server" DataField="UsrTimeSpan" InputMask="hh:mm" />

и внутри ячейки сетки:

введите описание изображения здесь

<RowTemplate>
    ...
    <px:PXTimeSpan ID="edgUsrTimeSpan" runat="server" DataField="UsrTimeSpan" InputMask="hh:mm" />
    ...
</RowTemplate>
<Columns>
...
    <px:PXGridColumn DataField="UsrTimeSpan" Width="90px" RenderEditorText="True" />
...
</Columns>


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow