微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Acumatica-案件状态Comboxbox

如何解决Acumatica-案件状态Comboxbox

在案例屏幕中,我们使用自动化步骤在状态字段中添加了一些其他状态选项,该方法可以正常工作。现在,我们的要求是按字母升序显示状态选项。有人可以建议我们如何实现这一目标。

我们在Acumatica 2019 R2中

 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);
        }

解决方法

我不确定是否有一种方法可以“分类”,但是我从未尝试过这样做。还值得注意的是,此方法需要编程列表更改而不是使用自动化步骤,因此将条目添加到列表中并不是那么容易,但是可控性要强得多。

您可以按照希望它们显示顺序的顺序重新定义选项,只要它们符合您的目的,我就可以将它们制成动态列表。此示例假定您为每个标签定义了消息,并且在列表中定义了具有每个值的类。

制作一个继承自PXStringListAttribute的类,并为AllowedLabels和Strings定义一个字符串数组。包括所需的选项,并按所需的顺序排序。对于此示例,我们将假定在名为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
);

PXStringListAttribute上的SetList将允许您通过替换自定义选项来代替先前定义的选项,从而覆盖此处显示的列表。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。