Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用PXTimeSpan中的时间格式设置inputmask_C#_Erp_Acumatica - Fatal编程技术网

C# 如何使用PXTimeSpan中的时间格式设置inputmask

C# 如何使用PXTimeSpan中的时间格式设置inputmask,c#,erp,acumatica,C#,Erp,Acumatica,我有一个StartTime字段,我想用时间格式hh:mm:ss填充该字段,但当我将其应用于PXFormView时,它只显示小时和分钟。如何使其以seconds格式显示timespan?我正在使用以下属性覆盖DAC对象: protected int? _CapacityStart; [PXDBInt()] [PXDefault(0)] [PXUIField(DisplayName = "Start")] 代码来自下面的aspx <px:PXTimeSpan TimeMode="True"

我有一个
StartTime
字段,我想用时间格式
hh:mm:ss
填充该字段,但当我将其应用于
PXFormView
时,它只显示小时和分钟。如何使其以
seconds
格式显示
timespan
?我正在使用以下属性覆盖DAC对象:

protected int? _CapacityStart;
[PXDBInt()]
[PXDefault(0)]
[PXUIField(DisplayName = "Start")]
代码来自下面的aspx

<px:PXTimeSpan TimeMode="True" ID="edCapacityStart" runat="server" DataField="CapacityStart" InputMask="hh:mm:ss" AllowNull="False" Size="S" ></px:PXTimeSpan>


正如Brendan所说,PXTimeSpan控件不允许您添加秒数。但您可以使用DateTime字段

下面是一个自定义属性的代码,该属性允许您在数据库中保存秒而不是分钟

使用系统;
使用PX数据;
名称空间PX.Data
{
#区域PXDBSelectimespanAttribute
///将int?类型的DAC字段映射到int
///数据库列。该字段值表示一个日期,以
///从1900年1月1日到现在已经过去了几秒钟。
/// 
///该属性将添加到DAC字段的值声明中。
///该字段将绑定到具有相同属性的数据库列
///名字。
///字段值将日期存储为秒数。在UI中,
///字符串通常由允许选择的控件表示
///从具有半小时间隔的时间值列表中。
/// 
/// 
///

///[PXDBselectimespan]
///[PXUIField(DisplayName=“运行时”)]
///公共虚拟int?运行时{get;set;]
///
/// 公共类PXDBSecTimeSpanAttribute:PXDBTimeSpanAttribute { #区域国家 /// ///“00:00:00”常数。 /// 公共新常量字符串Zero=“00:00:00”; /// ///表示字符串“00:00:00”的BQL常量。 /// 公共新密封类零:常量{public zero():基(零){} #端区态 #区域导体 /// ///使用默认参数初始化新实例。 /// 公共PXDBSecTimeSpanAttribute():base() { _InputMask=“HH:mm:ss”; _DisplayMask=“HH:mm:ss”; } #端区探测器 #区域实施 /// 公共覆盖无效字段选择(PXCache发送方,PXFieldSelectingEventArgs e) { 如果(_AttributeLevel==PXAttributeLevel.Item | | e.IsAltered) { e、 ReturnState=PXDateState.CreateInstance(例如,ReturnState、\u字段名、\u IsKey、null、\u InputMask、\u DisplayMask、\u MinValue、\u MaxValue); } if(e.ReturnValue!=null&(e.ReturnValue为int | | e.ReturnValue为int?) { TimeSpan=新的TimeSpan(0,0,0,(int)e.ReturnValue); e、 ReturnValue=新的日期时间(1900,1,1)。添加(span); } } /// 公共覆盖无效字段更新(PXCache发送方,PXFieldUpdateingEventArgs e) { 如果(e.NewValue==null | | e.NewValue为int) { } else if(如NewValue为字符串) { 日期时间值; if(DateTime.TryParse((字符串)e.NewValue,sender.Graph.Culture,System.Globalization.DateTimeStyles.None,out val)) { 时间跨度=新的时间跨度(val.Hour、val.Minute、val.Second); e、 NewValue=(int)span.TotalSeconds; } 其他的 { e、 NewValue=null; } } else if(例如,NewValue是DateTime) { DateTime val=(DateTime)e.NewValue; 时间跨度=新的时间跨度(val.Hour、val.Minute、val.Second); e、 NewValue=(int)span.TotalSeconds; } } #端域实现 ///返回通过添加指定数量的 ///至1900年1月1日的秒数。 ///要添加到默认日期的秒数。 公共静态日期时间FromSeconds(整数秒) { 时间跨度=新的时间跨度(0,0,0,s); 返回新的日期时间(1900,1,1); } } #端区PXDBSecTimeSpanAttribute }
您可以将其添加到自定义项目的“代码”部分,然后在自定义字段中使用它,或者替换现有PXDBInt timespan字段的属性,在该字段中您还可以像这样节省秒数:

[PXDBSecTimeSpan]
[PXUIField(DisplayName=“Start”)]
公共虚拟int?CapacityStart{get;set;}
并使用启用TimeMode的PXDateTimeEdit控件编辑值:

<px:PXDateTimeEdit runat="server" ID="edUsrSpanStart" DataField="UsrSpanStart" TimeMode="True" />


我相信timespan的工作原理是将时间(以分钟为单位)保存到INT字段中。如果分钟是最低的存储值,我不知道如何获得秒数。您可能需要考虑使用日期-时间字段并仅显示时间部分。