Acumatica-网格中的动态组合框/下拉列表,基于来自另一列的值

时间:2019-09-09 22:18:21

标签: dynamic combobox acumatica

我有一个网格,我需要在其中一列的下拉列表/组合框中进行选择,以根据另一网格列的值(如果有关系,也可以在组合框中)进行选择。网格中的每一行都需要发生这种情况。

在这种情况下,我想在第一列中选​​择“ PO”或“ SO”,在第二列中,选择列表取决于在第一列中选​​择的值。

在有帮助的情况下,选择将是SO订单类型的列表(可以来自SOOrderType表)或PO文档类型的列表(可能来自POOrderType.ListAttribute()),或者是硬编码(如果需要)。

我尝试使用PXStringListAttribute:

PXStringListAttribute.SetList<MyDAC.moduleType>(cache, null, valValue.ToArray(), valDesc.ToArray());

PXStringListAttribute.SetList<MyDAC.moduleType>(cache, row, valValue.ToArray(), valDesc.ToArray());

我已经在FieldUpdated,RowSelected,FieldSelecting甚至属性中尝试了这些,但是行为是一致的。当将“行”值作为第二个参数传递时,选择不会显示。传递null时,所有行的选择都是相同的。

我需要每行的选择都是动态的,并且要基于当前/同一行的列中的值。

任何见解或帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

像在第二个代码片段中那样使用PXStringListAttribute.SetList,方法是传递第二个参数的行。

.yaml

然后将MatrixMode =“ true”属性添加到ASPX文件中的网格。

PXStringListAttribute.SetList<MyDAC.moduleType>(cache, row, valValue.ToArray(), valDesc.ToArray());

将MatrixMode设置为true可以使每一行的内容不同。在这种情况下,它将允许该列为网格中的每一行显示不同的下拉值。附带说明,您仅应在需要时将MatrixMode设置为true,因为这可能会导致性能开销。