定制选择器挑战

时间:2016-06-15 19:49:50

标签: acumatica

我有一个带有多个自定义选择器的自定义屏幕,可根据下拉列表更改所选内容。

我实施的解决方案显示在前一个案例中: Dynamically changing PXSelector in Acumatica(谢谢)。

我的挑战是双重的:

1。)如果下拉选项是" No Lookup",那么我希望基本上删除PXSelector属性 - 只留下一个文本条目。不确定这是否可能......

2。)如果选择了其中一个选择器(让我们说项目),我希望选择以下选择器(让我们说任务)来根据项目进行过滤地选择。

非常感谢......

1 个答案:

答案 0 :(得分:3)

1)我认为唯一的方法是创建自己的属性。

类似的东西:

public class PXSelectorTextEditAttribute : PXSelectorAttribute
{
    bool selectorMode;
    public PXSelectorTextEditAttribute(Type type, bool selectorOn):base(type)
    { 
         selectorMode = selectorOn; 
    }
    public override void FieldVerifying(PXCache sender, PXFieldVerifyingEventArgs e)
    {
        if(selectorMode)
        base.FieldVerifying(sender, e);
    }

    public static void SwitchSelectorMode(PXSelectorTextEditAttribute attribute, bool onOff)
    {
        attribute.selectorMode = onOff;
    }
}

您可以打开和关闭属性的“选择器”部分。关闭字段验证后,您可以将任何值放入字段,就像在简单的TextEdit字段中一样。但是,字段右端的查找按钮仍然可见。我不知道如何隐藏它。

2)这种行为可以很容易地实现。你需要这样的东西(基于cashaccount的例子):

[PXSelector(typeof(Search<CABankTran.tranID, Where<CABankTran.cashAccountID, Equal<Current<Filter.cashAccountID>>>>))]

如果您想在未定义cashaccount时查看所有记录,那么您只需通过添加Or<Current<Filter.cashAccountID>, isNull>来修改where子句

另外,不要忘记将AutoRefresh="true"添加到a​​spx中的PXSelector。如果没有它,你的选择器将保留记录列表,直到你按下它内部的刷新。

相关问题