在预算分析表格中,当我们打开表格时,它会在左侧网格中显示项目列表。然后,当我们在左侧网格上选择值时,只有右侧的网格被填充。如果我在左侧只有一个项目,有什么方法可以在我打开表单时为该项目填充右侧网格?
我尝试将代码从左侧网格的选择更改方法带到表单的初始化方法,但是我在树节点等方面遇到了一些困难。
有人可以建议我这样做的最佳方法吗?
在预算分析表格中,当我们打开表格时,它会在左侧网格中显示项目列表。然后,当我们在左侧网格上选择值时,只有右侧的网格被填充。如果我在左侧只有一个项目,有什么方法可以在我打开表单时为该项目填充右侧网格?
我尝试将代码从左侧网格的选择更改方法带到表单的初始化方法,但是我在树节点等方面遇到了一些困难。
有人可以建议我这样做的最佳方法吗?
我建议对 AX 2012 R3 版本进行以下两项更改。我猜想这也适用于其他 AX 2012 版本。我在 AX 2009 中找不到任何预算分析,我怀疑它是否存在,因为它是 AX 2012 中引入的零售模块的一部分。
首先,自定义树控件的构建,以便选择第一个子控件而不是根控件。为此,请自定义initTreeControl
类的方法BudgetAnalysisInquiryHelper_PSN
并在树展开后添加以下行:
_formTreeControl.select(_formTreeControl.getChild(_formTreeControl.getRoot()));
既然选择了树中正确的节点,就可以调用getBudgetSummary
form的方法来更新网格了。BudgetAnalysisInquiry_PSN
要在打开表单后执行此操作,请将以下几行放在方法的末尾(基本上与树控件run
的方法中的行相同):selectionChanged
selectedNode = ctrlDimensionTree.getItem(ctrlDimensionTree.getSelection());
budgetAnalysisDimensionNode = selectedNode.data();
ctrlSelectedNode.text(budgetAnalysisDimensionNode.getNodeText());
element.getBudgetSummary(ctrlDimensionTree);
在方法中调用这些行init
为时过早,因为方法run
(在 之后执行init
)调用方法,该方法refreshGrids
会删除表单临时数据源中的数据。