2017-06-21 108 views
0

我添加了一个重定向链接到链接回到收据的网格中的参考数字。我遵循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 =真)以及搜索后graph.receipt.Current.RefNbr = row.RefNbr。在调试和逐步完成时,代码中的所有对象都被设置为它们应该具有的正确值。即使这些值正确显示,当弹出窗口出现时,它仍然具有不正确的记录(第一个记录被提取)。

回答

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> 
+0

将CommitChanges = true行添加到我的ASPX定义动作并添加graph.Caches [typeof(INRegiste)]。Current = row(因为row是我想要的目标),但仍然没有这样做。感觉就像当我点击第一个条目时,它会加载新的数据,但是每当我点击另一条记录时,就不会重新加载所需的数据,只是弹出打开旧屏幕。任何方式强制弹出窗口显示前重新加载数据? –

+0

你可以用刷新按钮手动刷新屏幕吗?如果你这样做,它会显示良好的记录吗? –

+0

因为它是一个弹出窗口,所以我没有能力通过浏览器刷新弹出窗口(甚至是右键单击刷新)。页面本身没有任何刷新按钮(Acumatica刷新按钮)。 –