如何对数据委托数组进行排序

时间:2018-03-21 11:32:14

标签: acumatica

我使用数据委托中的2个视图填充数据。我必须通过基于交易日期排序来计算运行余额。如何对数据进行排序并填充运行余额。

代表代码如下。

this.setState({token:responseJson.token});

数组未按TranDate排序且计算的余额错误

实施 Samvel Petrosov 建议后的结果

enter image description here

我试图在DateTime上对数组进行排序?并且错过了使用Value属性。我尝试了 Samvel Petrosov 的建议,但它确实有效。

enter image description here

1 个答案:

答案 0 :(得分:1)

以下是关于从T200 Acumatica框架基础课程中对数据视图的结果集进行排序的部分:

  

数据视图按以下规则执行委托:

     
      
  • 如果定义了委托,则调用委托      
        
    • 如果委托返回null,则执行BQL命令
    •   
    • 如果委托返回一个对象,则根据BQL命令的OrderBy子句重新排序结果
    •   
  •   
  • 如果未定义委托,请执行BQL命令
  •   
     

数据视图返回的结果集始终按ORDER排序   在数据视图对象的类型中指定的BY子句。如果你排序   数据以不同的方式记录在委托中,结果集   将在数据视图返回之前重新排序。

代码中的Balance的计算是在返回结果集之前完成的。这就是你不等的计算方法。返回结果集后,将进行排序。

更新1

将您的cmdcmd2更改为以下查询:

PXSelectBase<ARPayment> cmd = new PXSelectJoin<ARPayment, InnerJoin<GLTran, On<ARPayment.batchNbr, Equal<GLTran.batchNbr>>,
                                                       InnerJoin<PMProject, On<GLTran.projectID, Equal<PMProject.contractID>>>>,
                                                       Where<GLTran.projectID, Equal<Current<PMProject.contractID>>,
                                                       And<ARPayment.docType, Equal<ARPaymentType.prepayment>>>,OrderBy<Asc<ARPayment.DocDate>>>(Base);




PXSelectBase<APAdjust> cmd2 = new PXSelectJoin<APAdjust, LeftJoin<GLTran, On<APAdjust.adjBatchNbr, Equal<GLTran.batchNbr>, And<APAdjust.adjdAPAcct, Equal<GLTran.accountID>>>,
                                                     InnerJoin<APPayment, On<APAdjust.adjgRefNbr, Equal<APPayment.refNbr>, And<APAdjust.adjgDocType, Equal<APPayment.docType>>>,
                                                     InnerJoin<APTran,On<APTran.refNbr,Equal<APAdjust.adjdRefNbr>,And<APTran.tranType,Equal<APAdjust.adjdDocType>>>>>>,
                                                     //InnerJoin<GLTran, On<APTran.projectID, Equal<GLTran.projectID>>>>>,
                                                     Where<APAdjust.adjgDocType, Equal<APPaymentType.prepayment>, And<APTran.projectID, Equal<Current<PMProject.contractID>>, And<GLTran.accountID, NotEqual<APPayment.aPAccountID>>>>,OrderBy<Asc<APPayment.DocDate>>>(Base);

更新2

尝试在最后一个循环之前按事务日期添加其他排序:

importlist= importlist.OrderBy(x => x.TranDate.Value).ToList();

或者TranDate不是DateTime?

importlist= importlist.OrderBy(x => x.TranDate).ToList();