如何在Axapta的通过两种形式之间的参数?(How to pass a parameter bet

2019-06-25 21:08发布

我怎么能传递Axapta的形式之间的一个参数? 我想在表单中运行从按下按钮事件表格B,并通过...例如客户ID? 我怎样才能读取它的目的地的形式,也许在init方法? 谢谢

Answer 1:

方法1

最简单的方法是通过当前的记录。 只要改变按钮控件的DataSource值为例来的CustTable如果是的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()),您可以通过overiding源代码形式的按钮控件中单击方法做到这一点:

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形式之间传递值



文章来源: How to pass a parameter between two forms in Axapta?