我是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控件,但似乎并非如此。任何帮助表示赞赏。从屏幕获取值似乎是基本的,但我在文档中找不到任何帮助。感谢。
答案 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" />