Acumatica:从网格事件获取标题的字段值

时间:2017-06-14 16:37:13

标签: acumatica getvalue

我是Acumatica定制开发的新手,我尝试做一些我认为非常简单的事情。我在Sales Order标题中有一个Selector控件(DataClass:FSServiceOrder,DataField:BranchLocationID),允许用户设置Branch Location。下面,在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控件,但似乎并非如此。任何帮助表示赞赏。从屏幕获取值似乎是基本的,但我在文档中找不到任何帮助。感谢。

1 个答案:

答案 0 :(得分:2)

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

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

string BranchLocationID = myDataview.Current.BranchLocationID;

如果您不知道DataView名称,请在WebSite上按住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" />