Axapta 当我打开单个项目的表单时,预算分析表单右侧网格应默认打开。动态斧头

Axapta 当我打开单个项目的表单时,预算分析表单右侧网格应默认打开。动态斧头,axapta,dynamics-ax-2012,dynamics-ax-2009,dynamics-ax-2012-r2,dynamics-ax-2012-r3,Axapta,Dynamics Ax 2012,Dynamics Ax 2009,Dynamics Ax 2012 R2,Dynamics Ax 2012 R3,在预算分析表单中,当我们打开表单时,它会在左侧网格上显示项目列表。然后,当我们选择左侧网格上的值时,只有右侧的网格被填充。如果我的左手边只有一个项目,有没有办法在我打开表单的时候为该项目填充右手边的网格 我尝试将左侧网格的选择更改方法中的代码带到 初始化方法的形式,但我得到一些困难与树节点等 有人能给我建议一个最好的方法吗?我建议对AX 2012 R3版本进行以下两项更改。我猜这也适用于其他AX 2012版本。我在AX 2009中找不到任何预算分析,我怀疑它是否存在,因为它是AX 2012中引入

在预算分析表单中,当我们打开表单时,它会在左侧网格上显示项目列表。然后,当我们选择左侧网格上的值时,只有右侧的网格被填充。如果我的左手边只有一个项目,有没有办法在我打开表单的时候为该项目填充右手边的网格

我尝试将左侧网格的选择更改方法中的代码带到 初始化方法的形式,但我得到一些困难与树节点等


有人能给我建议一个最好的方法吗?

我建议对AX 2012 R3版本进行以下两项更改。我猜这也适用于其他AX 2012版本。我在AX 2009中找不到任何预算分析,我怀疑它是否存在,因为它是AX 2012中引入的零售模块的一部分

首先,自定义树控件的构建,以便选择第一个子控件而不是根控件。为此,请自定义类
BudgetAnalysisInquiryHelper\u PSN
的方法
initTreeControl
,并在树展开后添加以下行:

_formTreeControl.select(_formTreeControl.getChild(_formTreeControl.getRoot()));
现在选择了树中正确的节点,可以调用表单
BudgetAnalysisInquiry\u PSN
getBudgetSummary
方法来更新网格。要在打开表单后执行此操作,请将以下行放在方法
run
的末尾(基本上与树控件的方法
selectionChanged
中的行相同):


在方法
init
中调用这些行太早了,因为方法
run
(在
init
之后执行)调用方法
refreshGrids
,该方法删除表单临时数据源中的数据。

我建议对版本AX 2012 R3进行以下两项更改。我猜这也适用于其他AX 2012版本。我在AX 2009中找不到任何预算分析,我怀疑它是否存在,因为它是AX 2012中引入的零售模块的一部分

首先,自定义树控件的构建,以便选择第一个子控件而不是根控件。为此,请自定义类
BudgetAnalysisInquiryHelper\u PSN
的方法
initTreeControl
,并在树展开后添加以下行:

_formTreeControl.select(_formTreeControl.getChild(_formTreeControl.getRoot()));
现在选择了树中正确的节点,可以调用表单
BudgetAnalysisInquiry\u PSN
getBudgetSummary
方法来更新网格。要在打开表单后执行此操作,请将以下行放在方法
run
的末尾(基本上与树控件的方法
selectionChanged
中的行相同):


在方法
init
中调用这些行太早了,因为方法
run
(在
init
之后执行)调用方法
refreshGrids
,该方法删除表单临时数据源中的数据。

这起到了作用,但当我在AX中刷新缓存时,以及当我试图打开表单时:SelectedNode得到空值,我在B行得到错误:“FormTreeItem对象未初始化。堆栈跟踪表单\FormName\Methods\Run”LineA:selectedNode=ctrlDimensionTree.getItem(ctrlDimensionTree.getSelection());LineB:budgetAnalysisDimensionNode=selectedNode.data();因此,我在ctrlSelectedNode.text(“HardcodedExpectedText”)中注释了A行和B行以及硬编码文本;有什么意见吗?@Raas:你能为这个问题提出一个新的问题,并详细描述如何重现这个问题吗?我不确定“当我在AX中刷新缓存时”是什么意思,因为AX有很多不同的缓存。这是可行的,但当我在AX中刷新缓存时,当我尝试打开表单时:SelectedNode得到空值,我在B行得到错误:“FormTreeItem对象未初始化。堆栈跟踪表单\FormName\Methods\Run”LineA:selectedNode=ctrlDimensionTree.getItem(ctrlDimensionTree.getSelection());LineB:budgetAnalysisDimensionNode=selectedNode.data();因此,我在ctrlSelectedNode.text(“HardcodedExpectedText”)中注释了A行和B行以及硬编码文本;有什么意见吗?@Raas:你能为这个问题提出一个新的问题,并详细描述如何重现这个问题吗?我不知道你说的“当我在AX中刷新缓存时”是什么意思,因为AX有很多不同的缓存。