我有一个带有多个自定义选择器的自定义屏幕,可根据下拉列表更改所选内容。
我实施的解决方案显示在前一个案例中: Dynamically changing PXSelector in Acumatica(谢谢)。
我的挑战是双重的:
1。)如果下拉选项是" No Lookup",那么我希望基本上删除PXSelector属性 - 只留下一个文本条目。不确定这是否可能......
2。)如果选择了其中一个选择器(让我们说项目),我希望选择以下选择器(让我们说任务)来根据项目进行过滤地选择。
非常感谢......
答案 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"
添加到aspx中的PXSelector。如果没有它,你的选择器将保留记录列表,直到你按下它内部的刷新。