Acumatica:从网格更改事件中获取标头上的字段的值

时间:2019-02-14 03:23:11

标签: acumatica

我认为我有一个相当简单的问题,但是我是Acumatica的新手。我希望销售订单标题(SO.30.10.00)上的自定义字段对网格上项目的价格有一定影响。因此,我需要两件事。

1)我需要网格从标题读取值。我看了另一个类似的请求,但似乎无法使它工作。在SO上,看起来这段代码应该读取当前订单号的值,但是我得到“名称'Document'在当前上下文中不存在”

string TestString = Document.Current.OrderNbr;

2)当该字段更改时,是否可以重新计算所有行?实际上,我认为这可能是最简单的部分,但是由于我问了第一部分,所以我也想出了这一点。

谢谢!

1 个答案:

答案 0 :(得分:0)

该操作从“标题”字段流到“网格行”字段。修改标头字段后,请更新行。那将是您的问题中的第二名。

在#1中,您的问题是“文档”数据视图是您创建的SOOrderEntry 图形的成员,而不是您创建的SOOrderEntry 图形扩展的成员。在图形扩展上下文中,您可以使用Base属性访问基本图形属性,因此您将查看Base.Document

对于实现,首先,您希望header字段在修改后引发事件。这是通过将ASPX控件CommitChanges属性设置为true来实现的:

enter image description here

接下来,您要声明一个FieldUpdated事件处理程序,以挂接标题字段修改并根据标题字段修改明细行:

using PX.Data;

namespace PX.Objects.SO
{
    public class SOOrderEntry_Extension : PXGraphExtension<SOOrderEntry>
    {
        public void SOOrder_OrderDesc_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
        {
            SOOrder order = e.Row as SOOrder;

            if (order != null)
            {
                foreach (SOLine line in Base.Transactions.Select())
                {
                    line.TranDesc = order.OrderDesc;
                }
            }
        }
    }
}

在修改标题字段之前: enter image description here

修改标题字段后: enter image description here

我使用简单的=分配来设置明细行的值。当您要分配引发事件时,可以使用SetValue方法或SetValueExt。使用SetValueExt将引发FieldUpdated事件。