我认为我有一个相当简单的问题,但是我是Acumatica的新手。我希望销售订单标题(SO.30.10.00)上的自定义字段对网格上项目的价格有一定影响。因此,我需要两件事。
1)我需要网格从标题读取值。我看了另一个类似的请求,但似乎无法使它工作。在SO上,看起来这段代码应该读取当前订单号的值,但是我得到“名称'Document'在当前上下文中不存在”
string TestString = Document.Current.OrderNbr;
2)当该字段更改时,是否可以重新计算所有行?实际上,我认为这可能是最简单的部分,但是由于我问了第一部分,所以我也想出了这一点。
谢谢!
答案 0 :(得分:0)
该操作从“标题”字段流到“网格行”字段。修改标头字段后,请更新行。那将是您的问题中的第二名。
在#1中,您的问题是“文档”数据视图是您创建的SOOrderEntry 图形的成员,而不是您创建的SOOrderEntry 图形扩展的成员。在图形扩展上下文中,您可以使用Base
属性访问基本图形属性,因此您将查看Base.Document
。
对于实现,首先,您希望header字段在修改后引发事件。这是通过将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事件。