我想我有一个相当简单的问题,但我是Acumatica的新手。我想在销售订单(SO.30.10.00)的标题上设置一个自定义字段,以对网格上的商品价格产生一些影响。因此,我需要两件事。
1)我需要网格从标题中读取一个值。我看了另一个类似的请求,但我似乎无法使它工作。在SO上,看起来这段代码应该读取当前订单号的值,但我得到“当前上下文中不存在名称'文档'”
string TestString = Document.Current.OrderNbr;
2)当该字段发生变化时,是否可以重新计算所有行?我实际上认为这可能是最简单的部分,但是因为我问第一部分,我想我也把它扔在这里。
提前致谢!
操作从Header Field流向Grid Rows字段。修改标题字段后,更新行。在你的问题中,这将是#2。
在#1中,您的问题是文档数据视图是SOOrderEntry图的成员,而不是您创建的SOOrderEntry图扩展的成员。在图形扩展上下文中,您可以使用Base
属性访问基本图形属性,这样您就可以查看Base.Document
。
对于实现,首先您希望头字段在修改时引发事件。这是通过将ASPX控件CommitChanges
属性设置为true
来实现的:
接下来,您要声明一个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;
}
}
}
}
}
我使用简单的=
赋值来设置细节线的值。当你想要分配引发事件时,你可以使用SetValue
方法或SetValueExt
。使用SetValueExt
将引发FieldUpdated事件。