我自定义“批准时间卡摘要”屏幕以执行以下操作:
1。)在过滤器部分添加一个复选框
2。)选中此复选框后,请勿显示“已批准”复选框。网格中的行。
我添加了一个带有新的未绑定布尔字段的缓存扩展,并将复选框添加到屏幕的过滤器/标题部分。
我想知道的是 - 是否存在IEnumerable方法(我可以使用' summary'?),它可以检查标头过滤器字段并仅返回通过过滤器测试的行吗?如果是这样,我不确定这样做的语法是什么。
或者 - 使用添加的where子句重写Graph扩展中的Summary视图select语句会更好吗?
...谢谢
答案 0 :(得分:0)
我想出了如何做到这一点。在图表扩展中,我重写了“摘要”和#39;查看,然后使用IEnumerable'摘要'委托仅返回符合我设置的复选框条件的行。即:
public PXSelectJoin<EPSummaryApprove
, LeftJoin<EPEarningType, On<EPEarningType.typeCD, Equal<EPSummaryApprove.earningType>>>
, Where2<Where<EPSummaryApprove.taskApproverID, Equal<Current<EPSummaryFilter.approverID>>, Or<Where<EPSummaryApprove.taskApproverID, IsNull, And<EPSummaryApprove.approverID, Equal<Current<EPSummaryFilter.approverID>>>>>>
, And2<Where<EPSummaryApprove.weekId, GreaterEqual<Current<EPSummaryFilter.fromWeek>>, Or<Current<EPSummaryFilter.fromWeek>, IsNull>>
, And2<Where<EPSummaryApprove.weekId, LessEqual<Current<EPSummaryFilter.tillWeek>>, Or<Current<EPSummaryFilter.tillWeek>, IsNull>>
, And2<Where<EPSummaryApprove.projectID, Equal<Current<EPSummaryFilter.projectID>>, Or<Current<EPSummaryFilter.projectID>, IsNull>>
, And2<Where<EPSummaryApprove.projectTaskID, Equal<Current<EPSummaryFilter.projectTaskID>>, Or<Current<EPSummaryFilter.projectTaskID>, IsNull>>
, And<Where<EPSummaryApprove.employeeID, Equal<Current<EPSummaryFilter.employeeID>>, Or<Current<EPSummaryFilter.employeeID>, IsNull>>
>
>
>
>
>
>
> Summary;
protected IEnumerable summary()
{
var epsf = (EPSummaryFilter)Base.Filter.Cache.Current;
var epse = PXCache<EPSummaryFilter>.GetExtension<EPSummaryFilterExt>(epsf);
foreach(var res in Base.Summary.Select())
{
var sum = (EPSummaryApprove)res;
if (epse != null)
{
if (epse.ExcludeApproved == true)
{
if (sum.IsApprove != true)
{
yield return res;
}
}
else
yield return res;
}
else
yield return res;
}
}