刷新库存项目屏幕
Refresh Stock Items Screen
我在 Acumatica 中遇到问题。我在 InventoryItem table 上创建了一个触发器,以将插入的记录插入到我的自定义 table.
问题是,每当我尝试在 Acumatica 中保存新的库存项目时,它都不会反映库存项目的正确上次保存数据。常规设置选项卡中的详细信息不正确。我需要关闭屏幕并重新打开才能看到正确的数据。
有人可以帮助我了解如何在保存后立即获得刷新的库存项目屏幕。或者每当有自定义触发器时,Acumatica 中是否存在错误?
你可以试试select的方法。
例如:这是 Acumatica 源代码中的项目设置数据视图(您可以使用探索源代码页面)
[PXViewName(Messages.InventoryItem)]
public PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Current<InventoryItem.inventoryID>>>> ItemSettings;
通过自定义(假设您使用 AEF),为该数据视图添加 select 方法
[PXViewName(Messages.InventoryItem)]
public PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Current<InventoryItem.inventoryID>>>> ItemSettings;
protected virtual IEnumerable itemSettings()
{
return new PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Current<InventoryItem.inventoryID>>>>(Base).Select();
}
有时我使用 sql 存储过程将数据插入我的 table,select 方法有助于重新加载插入数据的屏幕。
假设您的网格已绑定以查看 PayRollsDetails。然后你可以使用下面的代码来刷新你的网格:
PayRollsDetails.View.Cache.Clear();
PayRollsDetails.View.Cache.ClearQueryCache();
我没有检查你说的不刷新信息的问题,但是如果你保存记录后需要强制刷新屏幕
- 覆盖坚持
- 调用基本操作
- 创建图形的新实例
- 搜索要设置为头缓存的当前记录
- 抛出新的重定向要求异常
因此代码可能如下所示[可能需要修改]
[PXOverride]
public void Persist(Action persit)
{
persit();// this will call base Persist();
InventoryItemMaint grp = PXGraph.CreateInstance<InventoryItemMaint>();
InventoryItem inv = PXSelect<InventoryItem, Where<InventoryItem.inventoryCD, Equal<Required<InventoryItem.inventoryCD>>>>.Select(grp, this.Base.Item.Current.InventoryCD.Trim());
if (inv != null && inv.InventoryID.HasValue)
{
grp.Item.Current = grp.Item.Search<InventoryItem.inventoryID>(inv.InventoryID);
throw new PXRedirectRequiredException(grp, "Reloading Item");
}
}
如果您不想刷新整个屏幕,您可以不抛出异常而是刷新其他用户 (Yura Zaletskyy) 在此 post 上建议的所需视图方法。
我在 Acumatica 中遇到问题。我在 InventoryItem table 上创建了一个触发器,以将插入的记录插入到我的自定义 table.
问题是,每当我尝试在 Acumatica 中保存新的库存项目时,它都不会反映库存项目的正确上次保存数据。常规设置选项卡中的详细信息不正确。我需要关闭屏幕并重新打开才能看到正确的数据。
有人可以帮助我了解如何在保存后立即获得刷新的库存项目屏幕。或者每当有自定义触发器时,Acumatica 中是否存在错误?
你可以试试select的方法。 例如:这是 Acumatica 源代码中的项目设置数据视图(您可以使用探索源代码页面)
[PXViewName(Messages.InventoryItem)]
public PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Current<InventoryItem.inventoryID>>>> ItemSettings;
通过自定义(假设您使用 AEF),为该数据视图添加 select 方法
[PXViewName(Messages.InventoryItem)]
public PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Current<InventoryItem.inventoryID>>>> ItemSettings;
protected virtual IEnumerable itemSettings()
{
return new PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Current<InventoryItem.inventoryID>>>>(Base).Select();
}
有时我使用 sql 存储过程将数据插入我的 table,select 方法有助于重新加载插入数据的屏幕。
假设您的网格已绑定以查看 PayRollsDetails。然后你可以使用下面的代码来刷新你的网格:
PayRollsDetails.View.Cache.Clear();
PayRollsDetails.View.Cache.ClearQueryCache();
我没有检查你说的不刷新信息的问题,但是如果你保存记录后需要强制刷新屏幕
- 覆盖坚持
- 调用基本操作
- 创建图形的新实例
- 搜索要设置为头缓存的当前记录
- 抛出新的重定向要求异常
因此代码可能如下所示[可能需要修改]
[PXOverride]
public void Persist(Action persit)
{
persit();// this will call base Persist();
InventoryItemMaint grp = PXGraph.CreateInstance<InventoryItemMaint>();
InventoryItem inv = PXSelect<InventoryItem, Where<InventoryItem.inventoryCD, Equal<Required<InventoryItem.inventoryCD>>>>.Select(grp, this.Base.Item.Current.InventoryCD.Trim());
if (inv != null && inv.InventoryID.HasValue)
{
grp.Item.Current = grp.Item.Search<InventoryItem.inventoryID>(inv.InventoryID);
throw new PXRedirectRequiredException(grp, "Reloading Item");
}
}
如果您不想刷新整个屏幕,您可以不抛出异常而是刷新其他用户 (Yura Zaletskyy) 在此 post 上建议的所需视图方法。