我该如何在Axapta表单之间传递单个参数? 我想在表单A中的点击按钮事件中运行表单B,并传递...例如客户ID? 在目标表单中,我该如何读取它,也许是在init方法中? 谢谢
我该如何在Axapta表单之间传递单个参数? 我想在表单A中的点击按钮事件中运行表单B,并传递...例如客户ID? 在目标表单中,我该如何读取它,也许是在init方法中? 谢谢
最简单的方法是传递当前记录。只需将示例按钮控件的DataSource值更改为CustTable(如果CustTable在当前表单数据源中)。然后在目标表单的初始化方法中执行以下操作:
public void init()
{
CustTable cTable;
;
super();
// Check for passed arguments
if( element.args() )
{
// get record parameter
if( element.args().record() && element.args().record().TableId == TableNum( CustTable ) )
{
cTable = element.args().record();
}
}
}
如果你仍需要传递一个值给.parm()(或者更复杂的对象.parmObject()),你可以通过重写源表单中的按钮控件的点击方法来实现:
void clicked()
{
// Args class is usually used in Axapta for passing parameters between forms
Args args;
FormRun formRun;
;
args = new args();
// Our values which we want to pass to FormB
// If we want pass just simple string we can use 'parm' method of 'Args' class
args.parm( "anyStringValue" );
// Run FormB
args.name( formstr( FormB ) );
formRun = classFactory.formRunClass( Args );
formRun.init();
formrun.run();
formrun.wait();
super();
}
然后在目标表单的初始化中:
public void init()
{
str anyStringValueFromCaller;
;
super();
// Check for passed arguments
if( element.args() )
{
// get string parameter
anyStringValueFromCaller = element.args().parm();
}
}
我肯定会只使用第一种方法,只有在特殊情况下才会选择第二种方法覆盖按钮单击方法,因为这是在表单之间传递值的默认模式之一。
更复杂的示例可在AxaptaPedia.com Passing values between forms中找到。