0

我是 Acumatica 定制开发的新手,我正在尝试做一些我认为非常简单的事情。我在销售订单标题中有一个选择器控件(DataClass:FSServiceOrder,DataField:BranchLocationID),允许用户设置分支位置。下面,在 Inventory 网格中,我只想将新行中的 Warehouse 字段设置为等于上述选择器的值。我可以使用硬编码值设置 Warehouse,但我不知道如何引用选择器或获取它的值,因为它似乎超出了传递的 PXCache 对象的范围:

protected void FSSODetPart_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{      
  string BranchLocationID = "" // Not sure how to get this value

  var row = (FSSODetPart)e.Row;
  cache.SetValueExt(row, "SiteID", BranchLocationID);
}

我希望我可以简单地引用所有类似于 ASP.NET 的 UI 控件,但似乎并非如此。任何帮助表示赞赏。从屏幕上获取值似乎是基本的,但我在文档中找不到任何帮助。谢谢。

4

1 回答 1

2

在 Acumatica 中,屏幕控件绑定到 DataViews。DataViews 包含 DAC 记录。通常的做法是从绑定的 DataView 中的当前 DAC 记录中获取值。

使用持有 FSServiceOrder DAC 记录的 DataView 的当前对象:

string BranchLocationID = myDataview.Current.BranchLocationID;

如果您不知道 DataView 名称,请在网站上按住 Ctl+Alt 并单击 BranchLocationID UI 字段。将出现一个显示 DataView 名称的弹出窗口。

从 DAC 集合中获取当前对象也应该可以,但最好使用 DataView:

string BranchLocationID = Base.Caches[typeof(FSServiceOrder)].Current.BranchLocationID;

还要确保在 Aspx 文件中的 BranchLocationID 表单字段上将 CommitChanges 属性设置为 true。这确保了当前对象在其值更改时将在后端触发事件。

     <px:PXSelector ID="edBranchLocationID" runat="server" 
                    DataField="BranchLocationID" CommitChanges="True" />
于 2017-06-14T17:01:58.820 回答