如何自动刷新 SO 订单输入页面
How to automatically refresh the SO Order Entry Page
我有一个 SO Order Entry 定制,它在 Action Email Sales Order/quote 期间为每个 SO 行设置一个 Acknowledged 复选框。
publicCRActivity列表Activity;
public PXAction通知;
[PXUIField(DisplayName = "Notifications", Visible = false)]
[PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntryF)]
受保护的虚拟 IEnumerable 通知(PXAdapter 适配器,
[PXString]
字符串通知CD
)
{
foreach(adapter.Get() 中的 SOOrder 顺序)
{
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;
}
}
一切都按预期进行,但我必须手动刷新页面才能看到复选框已被选中。手动刷新网格不会正确显示所有检查。如何在处理后自动刷新页面以使其正确显示?
通常清除缓存对我有用,但我没有看到您坚持更改。因此用户可以在不保存的情况下取消您的更改。如果您想确保为用户设置并保存您的标志,您应该保存更改,然后您可以使用缓存清除。 (但是保存也可以刷新页面)
Base.Actions.PressSave();
Base.Transactions.Cache.Clear();
Base.Transactions.Cache.ClearQueryCache();
在 return 之前尝试一下。
尝试在动作委托的最后调用:
Base.Transactions.View.RequestRefresh();
当收到 post 返回时,PXGrid 只同步当前记录,不同步 repainting/refreshing 其他行。
下面的代码片段在电子邮件销售 Order/Quote 操作期间为每个 SO 行设置了一个 Acknowledged 复选框。不幸的是,由于 ReportProcessor.ProcessReport(报告定义)方法破坏 PXLongOperationState 和 UI 线程 BLC 状态的问题,详细信息网格没有自动刷新。 该问题目前已在最新的 6.00.1686 版本中得到解决。
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;
}
}
}
}
我有一个 SO Order Entry 定制,它在 Action Email Sales Order/quote 期间为每个 SO 行设置一个 Acknowledged 复选框。 publicCRActivity列表Activity; public PXAction通知; [PXUIField(DisplayName = "Notifications", Visible = false)] [PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntryF)] 受保护的虚拟 IEnumerable 通知(PXAdapter 适配器, [PXString] 字符串通知CD ) { foreach(adapter.Get() 中的 SOOrder 顺序) {
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;
}
}
一切都按预期进行,但我必须手动刷新页面才能看到复选框已被选中。手动刷新网格不会正确显示所有检查。如何在处理后自动刷新页面以使其正确显示?
通常清除缓存对我有用,但我没有看到您坚持更改。因此用户可以在不保存的情况下取消您的更改。如果您想确保为用户设置并保存您的标志,您应该保存更改,然后您可以使用缓存清除。 (但是保存也可以刷新页面)
Base.Actions.PressSave();
Base.Transactions.Cache.Clear();
Base.Transactions.Cache.ClearQueryCache();
在 return 之前尝试一下。
尝试在动作委托的最后调用:
Base.Transactions.View.RequestRefresh();
当收到 post 返回时,PXGrid 只同步当前记录,不同步 repainting/refreshing 其他行。
下面的代码片段在电子邮件销售 Order/Quote 操作期间为每个 SO 行设置了一个 Acknowledged 复选框。不幸的是,由于 ReportProcessor.ProcessReport(报告定义)方法破坏 PXLongOperationState 和 UI 线程 BLC 状态的问题,详细信息网格没有自动刷新。 该问题目前已在最新的 6.00.1686 版本中得到解决。
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;
}
}
}
}