问题描述
我有一个查询屏幕,其中我们通过过滤器中的VendorID或FinPeriodID过滤了自定义DAC中的历史AP记录。
我已经创建了一个View Delegate来处理动态过滤逻辑,并通过调试确认它已被正确击中,并使用Filter的当前值附加了正确的WhereAnd语句。直接在数据库中运行等效的SQL语句会返回正确的记录,但是View委托最终不会在屏幕上返回任何记录。
基本视图仅定义为:public PXSelectReadonly<AAAPDoc> Docs;
视图代表定义为:
protected virtual IEnumerable<AAAPDoc> docs()
{
AAAPHistoricalFilter filter = Filter.Current;
PXSelectBase<AAAPDoc> cmd = new PXSelectReadonly<AAAPDoc>(this);
if (filter.VendorID.HasValue)
{
cmd.WhereAnd<Where<AAAPDoc.vendorID,Equal<Current<AAAPHistoricalFilter.vendorID>>>>();
}
if (filter.FinPeriodID.HasValue)
{
cmd.WhereAnd<Where<AAAPDoc.finPeriodID,Equal<Current<AAAPHistoricalFilter.finPeriodID>>>>();
}
foreach (AAAPDoc record in cmd.Select())
{
yield return record;
}
}
滤波器DAC
[Serializable]
[PXHidden]
public class AAAPHistoricalFilter : IBqlTable
{
#region VendorID
public abstract class vendorID : BqlInt.Field<vendorID>
{
}
[Vendor(IsDBField = false,DisplayName = "Vendor ID")]
public virtual int? VendorID { get; set; }
#endregion
...
编辑:使用原始的部分滤波器DAC更新以提供解决方案的上下文
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)