axaptaのフォーム間で単一のパラメーターを渡すにはどうすればよいですか?フォームAのクリックされたボタンイベントからフォームBを実行し、渡す...たとえば顧客ID?宛先フォームで、おそらくinitメソッドでそれを読み取るにはどうすればよいですか?ありがとう
16084 次
1 に答える
14
1方法
最も簡単な方法は、現在のレコードを渡すことです。CustTableが現在のフォームデータソースにある場合は、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方法
それでも1つの値.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方法を使用します。これは、フォーム間で値を渡すためのデフォルトパターンの1つだからです。より複雑な例は、AxaptaPedia.comで入手できます。フォーム間で値を渡す
于 2012-06-29T11:12:32.880 に答える