Acumatica-复合主键选择器

问题描述 投票:0回答:1

如何为复合主键创建单独的选择器...像OrderNbr和Revision nbr ...我在从Order Nbr选择器中选择值时遇到问题,如果版本nbr字段为默认值,它将设置值,否则,Order nbr选择器无法在Revision nbr字段中设置值。如何在从任何选择器中选择值时设置两个字段。

acumatica composite-key
1个回答
0
投票
解决方案是让一个选择器查询引用另一个键字段。

使用两个选择器控件OrderType和OrderNumber的销售订单示例:

// User selects the OrderType first [PXSelector(typeof(Search<SOOrderType.orderType>))] // OrderNumber Selector reference current OrderType value in selector query [PXSelector(typeof(Search<SOOrder.orderNbr, Where<SOOrder.orderType, Equal<Current<this.orderType>>>>)]

您还需要将AutoRefresh属性设置为True,以便每次重新打开选择器对话框时,选择器都会重新执行查询。这样可以确保在示例中按订单类型对其进行了正确过滤。

<px:PXSelector ID="edOrderType" runat="server" DataField="OrderType" AutoRefresh="True" CommitChanges="True" DataSourceID="ds"> <px:PXSelector ID="edOrderNbr" runat="server" DataField="OrderNbr" AutoRefresh="True" CommitChanges="True" DataSourceID="ds">

完全不可能只有一个选择器对话框来选择一条需要多个字段才能唯一的记录。在那些特殊情况下,另一种解决方案是添加另一个唯一的字段,然后根据该字段选择记录。请注意,对于您的用例,两个选择器控件是最好。

要实现此替代解决方案,请在数据库中添加Identity类型列作为唯一字段,并使用PXDBIdentity属性修饰匹配的DAC字段。保持其他键不变。身份字段将自动自动递增,并根据选择器正确运行所需的单个字段来保证唯一性。

© www.soinside.com 2019 - 2024. All rights reserved.