Acumatica 针灸-病例状态组合Xbox

Acumatica 针灸-病例状态组合Xbox,acumatica,Acumatica,我们使用自动化步骤在案例屏幕的状态字段中添加了一些额外的状态选项,这正按照预期工作。现在我们的要求是按字母顺序按升序显示状态选项。有谁能建议我们如何做到这一点 我们在Acumatica public class SelectableDataTypes : PXStringListAttribute { public string[] AllowedLabels = new string[] { "A",&quo

我们使用自动化步骤在案例屏幕的状态字段中添加了一些额外的状态选项,这正按照预期工作。现在我们的要求是按字母顺序按升序显示状态选项。有谁能建议我们如何做到这一点

我们在Acumatica

 public class SelectableDataTypes : PXStringListAttribute
    {
        public string[] AllowedLabels = new string[]
        {
            "A","B","C"
        };

        public string[] AllowedValues = new string[]
        {
            "ValueA","ValueB","ValueC"            
        };
    }

    protected virtual void CRCase_RowSelected(PXCache sender, PXRowSelectedEventArgs e, PXRowSelected BaseEvent)
        {
            BaseEvent?.Invoke(sender, e);

            CRCase doc = e.Row as CRCase;

            if (doc == null)
                return;

            PXStringListAttribute.SetList<CRCase.status>(Base.Case.Cache, null, new SelectableDataTypes().AllowedValues, new SelectableDataTypes().AllowedLabels);
        }
公共类SelectableDataTypes:PXStringListAttribute { 公共字符串[]AllowedLabels=新字符串[] { “A”、“B”、“C” }; 公共字符串[]AllowedValues=新字符串[] { “ValueA”、“ValueB”、“ValueC” }; } 已选择受保护的虚拟无效CRCase_行(PXCache发送方、PXRowSelectedEventArgs e、PXRowSelected BASEVENT) { BaseEvent?调用(发送方,e); CRCase doc=e行作为CRCase; 如果(doc==null) 返回; PXStringListAttribute.SetList(Base.Case.Cache,null,新的SelectableDataTypes().AllowedValues,新的SelectableDataTypes().AllowedLabels); }
我不确定是否有办法“排序”,但我从未尝试过这样做。还值得注意的是,这种方法需要编程列表更改,而不是使用自动化步骤,因此向列表中添加条目并不是那么容易,而是更容易控制

您可以按照您希望的显示顺序重新定义选项,如果符合您的目的,与我创建动态列表的顺序大致相同。本例假设您为每个标签定义了消息,并且在列表中定义了每个值的类

创建一个从PXStringListAttribute继承的类,并为AllowedLabels定义一个字符串数组,为AllowedValues定义一个字符串数组。包括所需选项,按所需顺序排序。在本例中,我们假设这是在一个名为MySelectableData的类中定义的

public class SelectableDataTypes : PXStringListAttribute
{

    public string[] AllowedLabels = new string[]
    {
            Messages.FieldLabelA,
            Messages.FieldLabelB,
            Messages.FieldLabelC,
            Messages.FieldLabelD,
            Messages.FieldLabelE,
            Messages.FieldLabelF,
    };

    public string[] AllowedValues = new string[]
    {
            DataValues.ValueA,
            DataValues.ValueB,
            DataValues.ValueC,
            DataValues.ValueD,
            DataValues.ValueE,
            DataValues.ValueF,
    };
}
同样,由于您的目标是对所选内容进行排序,因此请确保按排序顺序列出它们

如果列表是动态的,请将以下内容(在列表之间切换逻辑)放置在RowSelected事件中。如果页面是静态的(在您描述的情况下更可能是静态的),则将其放置在页面的Initialize方法中

PXStringListAttribute.SetList<MyDAC.myField>(
    MyView.Cache,
    null,
    new MySelectableData.SelectableDataTypes().AllowedValues,
    new MySelectableData.SelectableDataTypes().AllowedLabels
);
pxstringlisttribute.SetList(
MyView.Cache,
无效的
新建MySelectableData.SelectableDataTypes()。允许值,
新建MySelectableData.SelectableDataTypes()。允许标签
);
PXStringListAttribute上的SetList将允许您通过替换自定义选项替代先前定义的选项来覆盖此处所示的列表