如果在Acumatica中仅默认数字,则显示<new>

时间:2017-09-19 13:55:41

标签: acumatica

现在我有以下要求:制作自动编号输入字段,它只能有数字,但在初始输入时也应该显示。在实现此要求时,我注意到以下内容:仅对于我可以用作输入掩码的数字,&#39; 0&#39;,&#39; 9&#39;或&#39;#&#39;,而不是&#39; C&#39;。但是,当我使用&#39; 0&#39;,&#39; 9&#39;或者&#39;#&#39;我无法在该字段中显示。但是当我使用C&#39;作为输入掩码,我也可以输入非数字符号。如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

PXFieldState类封装了输入掩码。 FieldSelecting事件处理程序是动态设置输入掩码的好地方。您可以复制AutoNumberAttribute类并通过在其FieldSelecting事件处理程序中动态设置输入掩码来修改它以满足您的需要:

void IPXFieldSelectingSubscriber.FieldSelecting(PXCache sender, PXFieldSelectingEventArgs e)
{
    if (_AttributeLevel == PXAttributeLevel.Item || e.IsAltered)
    {
        string inputMask = e.ReturnValue == null || (e.ReturnValue is string && ((string)e.ReturnValue) == "<NEW>") ? "CCCCCCCC" : "########";
        e.ReturnState = PXStringState.CreateInstance(e.ReturnState, null, null, _FieldName, null, -1, inputMask, null, null, null, null);
    }
}