Sök…


Introduktion

Detta ämne leder dig genom olika alternativ som finns tillgängliga i Acumatica-ramverket för att skapa datum- och tidsfält i en datatillgångsklass (DAC).

PX (DB) DateAndTime-attributet

PXDBDateAndTime- attributet och PXDateAndTime- attributet är utformade för att arbeta med ett DAC-fält av den Nullable<DateTime> ( DateTime? ) DateTime? och lagra både datum- och tidsvärdesdelar i ett enda fält:

#region UsrDateAndTime
public abstract class usrDateAndTimeAttribute : IBqlField
{ }

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

Från UI-perspektivet, för ett fält dekorerat med PXDBDateAndTimeAttribute eller PXDateAndTimeAttribute , förväntas man skapa antingen separata ingångskontroller för datum- och tidsvärdesdelar:

ange bildbeskrivning här

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

eller separata rutkolumner för att ange och visa datum- och tidsvärden:

ange bildbeskrivning här

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

PXDBTime-attributet

Attributet PXDBTime är utformat för att arbeta med ett DAC-fält av Nullable<DateTime> ( DateTime? ) Och lagra bara DateTime? utan datum i ett DAC-fält:

#region UsrTime
public abstract class usrTime : IBqlField
{ }

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

I användargränssnittet skapar systemet för ett fält dekorerat med PXDBTimeAttribute en ingångskontroll som endast accepterar tidsvärden båda i en form:

ange bildbeskrivning här

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

och inom en nätcell:

ange bildbeskrivning här

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

PX (DB) DateAttribute-attributet

PXDBDate- attributet och PXDate- attributet är utformade för att arbeta med ett DAC-fält av Nullable<DateTime> ( DateTime? ) Och lagra datumvärdet med en valfri tidsdel i ett enda fält. Wheather PX (DB) DateAttribute bör spara tid utöver datum i ett DAC-fält definieras av egenskapen PreserveTime : när PreserveTime är inställt på True , sparas tidsdelen av ett fältvärde , annars sparas bara datumdelen i en DAC-fält:

#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

I användargränssnittet skapar systemet för ett fält dekorerat med PXDBDateAttribute eller PXDateAttribute en ingångskontroll som antingen endast antar datumvärden eller både datum- och tidsvärden beroende på värdet på egenskapen PreserveTime . Detta koncept fungerar exakt samma på en form:

ange bildbeskrivning här

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

och inom en nätcell:

ange bildbeskrivning här

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

PXDBTimeSpan-attributet

Attributet PXDBTimeSpan är utformat för att arbeta med ett DAC-fält av Nullable<int> ( int? ) Och lagra tidsvärdet i ett DAC-fält som antalet minuter som gått sedan midnatt:

#region UsrTimeInt
public abstract class usrTimeInt : IBqlField
{ }

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

I användargränssnittet skapar systemet för ett fält dekorerat med PXDBTimeSpanAttribute en rullgardinsmeny med halvtimmes intervallvärden båda på en form:

ange bildbeskrivning här

och inom en nätcell:

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

ange bildbeskrivning här

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

PXTimeList-attributet

Attributet PXTimeList är utformat för att arbeta med ett DAC-fält av Nullable<int> ( int? ) Och lagra tidsintervallet i ett DAC-fält som ett antal minuter:

#region UsrTimeSpan
public abstract class usrTimeSpan : IBqlField
{ }

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

I användargränssnittet skapar systemet ett fält med 30-minuters intervallvärden för ett fält dekorerat med PXTimeListAttribute båda på en form:

ange bildbeskrivning här

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

och inom en nätcell:

ange bildbeskrivning här

<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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow