首页 文章

如何自动刷新SO订单输入页面

提问于
浏览
0

我有一个SO订单输入自定义,在操作电子邮件销售订单/报价期间为每个SO行设置一个确认复选框为true . public CRActivityList Activity;公共PXAction通知; [PXUIField(DisplayName =“Notifications”,Visible = false)] [PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntryF)]受保护的虚拟IEnumerable通知(PXAdapter适配器,[PXString]字符串notificationCD){foreach(SOOrder)在adapter.Get()){中的顺序

var parameters = new Dictionary<string, string>();
      parameters["SOOrder.OrderType"] = order.OrderType;
      parameters["SOOrder.OrderNbr"] = order.OrderNbr;
     Activity.SendNotification(ARNotificationSource.Customer,     notificationCD, order.BranchID, parameters);

      foreach (SOLine line in PXSelect<SOLine, Where<SOLine.orderNbr,    Equal<Required<SOLine.orderNbr>>>>.Select(Base, order.OrderNbr))
      {

           SOLineExt rowExt = line.GetExtension<SOLineExt>();
           rowExt.UsrAcknowledged = true;

               Base.Transactions.Update(line);
                //Base.Transactions.View.RequestRefresh();
               // SOOrderEntry grp = PXGraph.CreateInstance<SOOrderEntry>();
               // grp.Document.Search<SOOrder.orderNbr>(order.OrderNbr,  order.OrderType);

      }
      yield return order;
    }
  }

一切都按预期工作,但我必须手动刷新页面以查看复选框是否已选中 . 手动刷新网格不会正确显示所有检查 . 如何在流程后自动刷新页面以使其正确显示?

3 回答

  • 0

    通常缓存清除对我有效,但我不认为你坚持你的改变 . 因此,用户可以取消您的更改而不保存 . 如果要确保为用户设置和保存标志,则应保存更改,然后可以使用缓存清除 . (但是保存也可以刷新页面)

    Base.Actions.PressSave();
    Base.Transactions.Cache.Clear();
    Base.Transactions.Cache.ClearQueryCache();
    

    在返回之前尝试一下 .

  • 0

    尝试在动作委托的最后调用:

    Base.Transactions.View.RequestRefresh();
    

    收到回发后,PXGrid只同步当前记录,而不是重新绘制/刷新其他行 .

  • 0

    下面的代码片段在操作电子邮件销售订单/报价期间为每个SO行设置一个确认复选框为true . 遗憾的是,由于ReportProcessor.ProcessReport(报告定义)方法破坏PXLongOperationState和UI线程BLC状态的问题,详细信息网格未自动刷新 . The issue is currently resolved in the latest 6.00.1686 build.

    using PX.Data;
    using PX.Objects.AR;
    using System.Collections;
    using System.Collections.Generic;
    
    namespace PX.Objects.SO
    {
        public class SOOrderEntryExt : PXGraphExtension<SOOrderEntry>
        {
            [PXUIField(DisplayName = "Notifications", Visible = false)]
            [PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntryF)]
            protected IEnumerable Notification(PXAdapter adapter, [PXString] string notificationCD)
            {
                foreach (SOOrder order in adapter.Get())
                {
                    var parameters = new Dictionary<string, string>();
                    parameters["SOOrder.OrderType"] = order.OrderType;
                    parameters["SOOrder.OrderNbr"] = order.OrderNbr;
                    Base.Activity.SendNotification(ARNotificationSource.Customer, notificationCD, order.BranchID, parameters);
    
                    foreach (SOLine line in Base.Transactions.Select())
                    {
                        SOLineExt rowExt = line.GetExtension<SOLineExt>();
    
    
                 rowExt.UsrAcknowledged = true;
                    Base.Transactions.Update(line);
                }
                Base.Save.Press();
    
                yield return order;
            }
        }
    }
    

    }

相关问题