如何在 axapta 的表单之间传递单个参数?我想从表单 A 中的单击按钮事件运行表单 B 并传递...例如客户 ID?我怎样才能在目标表单中读取它,也许在init方法中?谢谢
问问题
16084 次
1 回答
14
1 方法
最简单的方法是通过当前记录。如果 CustTable 位于当前 Form 数据源中,只需将 Example 的按钮控件的 DataSource 值更改为 CustTable。然后在目标形式的 init 方法中:
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();
}
}
}
2 方法
如果您仍然需要传递一个值 .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();
}
然后在目标表单init中:
public void init()
{
str anyStringValueFromCaller;
;
super();
// Check for passed arguments
if( element.args() )
{
// get string parameter
anyStringValueFromCaller = element.args().parm();
}
}
我绝对应该只使用第一种方法,并且只有在特殊情况下才会使用带有覆盖按钮单击方法的#2 方法,因为这是在表单之间传递值的默认模式之一。AxaptaPedia.com上提供了更复杂的示例 在表单之间传递值
于 2012-06-29T11:12:32.880 回答