更新自定义数据视图代码

时间:2017-11-01 11:37:51

标签: acumatica

我正在尝试更新ARTran的TranDesc字段,在发票和备忘录页面中覆盖ARTran的代码片段。这是完整的代码:

[PXOverride]
        public virtual IEnumerable transactions()
        {
            foreach (PXResult<ARTran, SOLine> tran in PXSelectJoin<ARTran, LeftJoin<SOLine,
              On<SOLine.orderType, Equal<ARTran.sOOrderType>,
              And<SOLine.orderNbr, Equal<ARTran.sOOrderNbr>,
              And<SOLine.lineNbr, Equal<ARTran.sOOrderLineNbr>>>>>,
            Where<ARTran.tranType, Equal<Current<ARInvoice.docType>>,
              And<ARTran.refNbr, Equal<Current<ARInvoice.refNbr>>>>,
            OrderBy<Asc<ARTran.tranType, Asc<ARTran.refNbr, Asc<ARTran.lineNbr>>>>>.Select(Base))
            {
                if (((ARTran)tran).LineType != SOLineType.Discount)
                {
                    if (((ARTran)tran).TranDesc.Split(':').Length > 1)
                    {
                        using (PXTransactionScope ts = new PXTransactionScope())
                        {
                            string[] desc = ((ARTran)tran).TranDesc.Split(':');
                            ((ARTran)tran).TranDesc = desc[1];
                            Base.Transactions.Cache.IsDirty = true;
                            Base.Transactions.Update((ARTran)tran);
                            Base.Actions.PressSave();
                            Base.Persist();
                            ts.Complete();
                        }

                    }
                    yield return tran;
                }

            }
        }

这显示了在':'之前切片文本后的TranDesc,但我也想将此更改保留到数据库中。但是代码并没有将数据保存在数据库中。

谢谢。

1 个答案:

答案 0 :(得分:1)

我会尝试以下代码,而不是尝试将PXResult对象转换为正确的格式。 ARTRan artran = tran.GetItem<ARTran>(); artran.TranDesc = desc[1]; Base.Transactions.Update((ARTran)tran);

} //outside the for loop

Base.Actions.PressSave();

另外,我会尝试删除PXTransactionScope