You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Acumatica CR302000页面:无法获取当前OrdNbr跳转销售订单

解决Acumatica CR302000页面网格行OrdNbr获取问题

核心解决步骤

1. 正确获取当前选中的订单行

首先确认Graph中定义的销售订单数据视图(假设命名为SOOrders)已正确关联联系人:

public PXSelect<SOOrder, Where<SOOrder.usrInstitutionalContact, Equal<Current<Contact.contactID>>>> SOOrders;

在跳转Action的代码中,直接通过视图的Current属性获取选中行,注意将Action的CommitChanges设为true以保证缓存数据最新:

public PXAction<Contact> OpenSalesOrder;
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Open Sales Order")]
protected void openSalesOrder()
{
    SOOrder selectedSO = Base.SOOrders.Current;
    if (selectedSO == null) return;

    // 获取复合主键:OrderType + OrdNbr
    string orderType = selectedSO.OrderType;
    string ordNbr = selectedSO.OrdNbr;
}

2. 修正跳转逻辑的查询条件

销售订单采用OrderType + OrdNbr复合主键,仅用OrdNbr查询会导致定位错误,正确的跳转代码如下:

if (selectedSO != null)
{
    SOOrder targetOrder = PXSelect<SOOrder, 
        Where<SOOrder.orderType, Equal<Required<SOOrder.orderType>>, 
        And<SOOrder.ordNbr, Equal<Required<SOOrder.ordNbr>>>>>.Select(Base, selectedSO.OrderType, selectedSO.OrdNbr);

    if (targetOrder != null)
    {
        PXRedirectHelper.TryRedirect(Base, targetOrder, PXRedirectHelper.WindowMode.NewWindow);
    }
}

3. 排查数据加载与缓存问题

如果仍无法获取Current行,检查以下两点:

  • 切换联系人时刷新订单视图:在Contact的RowSelected事件中添加刷新逻辑:
    protected virtual void Contact_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
    {
        Contact contact = e.Row as Contact;
        if (contact != null)
        {
            Base.SOOrders.View.RequestRefresh();
        }
    }
    
  • 验证网格绑定配置:确认页面PXGrid的DataMember属性与Graph中定义的订单视图名称一致。

内容的提问来源于stack exchange,提问作者Alfredo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 22:50:42