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