如何在Axapta中的两个窗体之间传递参数?

如何在Axapta中的两个窗体之间传递参数?,axapta,dynamics-ax-2009,Axapta,Dynamics Ax 2009,如何在axapta中的窗体之间传递单个参数?我想从表单a中的点击按钮事件运行表单B并传递。。。例如,客户id? 我如何在目标表单中读取它,可能是在init方法中? 谢谢1方法 最简单的方法是传递当前记录。只要将按钮控件的数据源值更改为CustTable(例如,如果CustTable是当前表单数据源)。然后在目标表单init方法中: public void init() { 可定制的; ; 超级(); //检查传递的参数 if(element.args()) { //获取记录参数 if(eleme

如何在axapta中的窗体之间传递单个参数?我想从表单a中的点击按钮事件运行表单B并传递。。。例如,客户id? 我如何在目标表单中读取它,可能是在init方法中? 谢谢

1方法 最简单的方法是传递当前记录。只要将按钮控件的数据源值更改为CustTable(例如,如果CustTable是当前表单数据源)。然后在目标表单init方法中:

public void init()
{
可定制的;
;
超级();
//检查传递的参数
if(element.args())
{
//获取记录参数
if(element.args().record()&&element.args().record().TableId==TableNum(CustTable))
{
cTable=element.args().record();
}
}
}
2方法 如果您仍然需要只传递一个值.parm()(或更复杂的对象.parmObject()),可以通过覆盖源窗体的按钮控件方法来实现这一点:

void clicked()
{
//Args类通常在Axapta中用于在表单之间传递参数
Args-Args;
FormRun-FormRun;
;
args=新args();
//我们希望传递给FormB的价值观
//如果我们只想传递简单的字符串,我们可以使用'Args'类的'parm'方法
参数参数(“anyStringValue”);
//运行表格B
参数名称(formstr(FormB));
formRun=classFactory.formRunClass(Args);
formRun.init();
formrun.run();
formrun.wait();
超级();
}
然后在目标表单init中:

public void init()
{
str anyStringValueFromCaller;
;
超级();
//检查传递的参数
if(element.args())
{
//获取字符串参数
anyStringValueFromCaller=element.args().parm();
}
}
我肯定只会使用第一种方法,并且只有在特殊情况下才会使用#2方法和覆盖按钮单击方法,因为这是表单之间传递值的默认模式之一。 更复杂的示例可在