我们有一些需要在Acumatica中有一个时间字段(PXDBInt作为总分钟)来向用户显示值并允许用户输入负值。 PXDBTimeSpanLong属性的标准格式不允许输入或正确显示负值(db值或未绑定的公式值已为负值)。
是否有人创建了一个继承PXDBTimeSpanLongAttribute
的自定义类,并且能够显示并输入负值?我们使用的是显示在hh:mm
TimeSpanFormatType.ShortHoursMinutesCompact
格式
示例用户条目:
PXDBTimeSpanLongAttribute的DAC使用示例:
public abstract class myTime : PX.Data.IBqlField
{
}
[PXDBTimeSpanLong(Format = TimeSpanFormatType.ShortHoursMinutesCompact)]
[PXUIField(DisplayName = "My Time")]
public virtual Int32? MyTime { get set; }
使用ShortHoursMinutesCompact
测试格式“00:00”(int 0)和“23:59”(int 1439)之间的正值正常工作
未正确显示正确存储在数据库中的负数(假设条目允许否定输入)。例如,预期的“-02:45”(int -165)值导致显示“0:2”。当我单击该字段然后单击该值将更改为“00:02”而不输入任何新值。
即使ShortHoursMinutesCompact格式的目的是24小时输入,输入大于24小时的值也没有字段限制。该字段将允许并接受任何符合hh:mm格式的值(“00:00”和“99:99”之间的值)。当用户输入例如“29:00”时,显示的值变为“05:00”,但数据库值为1740(总分钟为29小时)。
答案 0 :(得分:0)
找到了解决方法
虽然我需要PXDBTimeSpanLongAttribute
接受所有允许格式的负值,但我能够解决更重要的问题,因为我需要一个负值24小时时间字段(在-24以内验证条目) +24小时)。
我发现PXTimeListAttribute
是PXDBTimeSpanLongAttribute
的工作版本(使用ShortHoursMinutesCompact
格式时)。
使用PXTimeList与PXDBTimeSpanLong(ShortHoursMinutesCompact)的好处
在一个完美的世界里,允许-24:00到+24:00但是主题为另一天会很好。
除了更改我的DAC /字段上使用的属性之外,我还必须使用以下示例将我的字段的页面条目从PXMaskEdit更新为PXTimeSpan:
页面网格 - RowTemplate :
<px:PXTimeSpan ID="edMyTimeField" TimeMode="True" runat="server" DataField="MyTimeField" InputMask="hh:mm" CommitChanges="True" />
页面网格 - 列:
<px:PXGridColumn DataField="MyTimeField" Width="60px" AutoCallBack="True" RenderEditorText="True"/>
属性的示例用法:
#region MyTimeField
public abstract class myTimeField : PX.Data.IBqlField
{
}
[PXDBInt]
[PXTimeList]
[PXDefault(0)]
[PXUIField(DisplayName = "My Time")]
public virtual Int32? MyTimeField { get; set; }
#endregion