我在网格中添加了一个重定向链接,用于链接回收据。我按照T200中的说明执行任务,除了 我创建了一个打开弹出窗口而不是新选项卡的页面。它适用于我点击的第一个参考号,但之后它不会更改记录。而是弹出窗口显示我单击的第一个参考号的记录。这是我的代码:
protected void RefNbrReceipt()
{
INRegister row = Receipts.Current;
INReceiptEntry graph = PXGraph.CreateInstance<INReceiptEntry>();
graph.receipt.Current = graph.receipt.Search<INRegister.refNbr>(row.RefNbr);
if (graph.receipt.Current != null)
{
throw new PXPopupRedirectException(graph, "Receipt Details");
}
}
我检查并确保行更新为所选值(我在网格上有SyncPosition = true)以及搜索之后的graph.receipt.Current.RefNbr = row.RefNbr。调试和单步调试时代码中的所有对象都设置为它们应该是正确的值。即使这些值显示正确,当弹出窗口显示时,它仍然有不正确的记录(提取的第一个记录)。
答案 0 :(得分:0)
你确定电流设置正确吗? 如果不确定你使用DependOnGrid:
<px:PXDSCallbackCommand Name="RefNbrReceipt" Visible="False" DependOnGrid="grid" CommitChanges="True" /></CallbackCommands>
您还可以在打开图表之前尝试设置CurrentDocument和当前缓存记录:
INRegister inRegister = graph.receipt.Search<INRegister.refNbr>(row.RefNbr);
graph.receipt.CurrentDocument.Current = inRegister;
graph.Caches[typeof(INRegister)].Current = inRegister;
在某些具有弹出窗口的情况下,您需要使用AutoCallBack-Command和AutoCallBack-Target属性发出刷新命令,您可以使用网格和表单容器来执行此操作:
<px:PXSmartPanel ID="pnlActivityLog" runat="server" Width="800px" Height="400px" Style="z-index: 108;" Caption="Activity log" CaptionVisible="True"
Key="ActivityLogs" CommandSourceID="ds" CreateOnDemand="False" AutoCallBack-Command="Refresh" AutoCallBack-Target="gridActivityLog">
<px:PXGrid ID="gridActivityLog" runat="server" Height="200px" Width="100%" BatchUpdate="True" SkinID="Inquire" DataSourceID="ds">
</px:PXPanel>
</px:PXSmartPanel>