Axapta 在两个窗体之间传递扩展数据类型值

Axapta 在两个窗体之间传递扩展数据类型值,axapta,microsoft-dynamics,x++,Axapta,Microsoft Dynamics,X++,情景: 我创建了两个简单的表单。Form1是一个带有按钮的简单StringEdit控件。Form2是一组不同的控件和按钮,单击Form1的按钮后,Form2将打开 我需要的是: 我需要的是用Form1的StringEdit控件中设置的值初始化Form2 我尝试将DataSource和DataField分配给StrinEdit控件,结果成功了: void clicked() { Args args; FormRun formRun; ; args = new Args(); args = ele

情景: 我创建了两个简单的表单。Form1是一个带有按钮的简单StringEdit控件。Form2是一组不同的控件和按钮,单击Form1的按钮后,Form2将打开

我需要的是: 我需要的是用Form1的StringEdit控件中设置的值初始化Form2

我尝试将DataSource和DataField分配给StrinEdit控件,结果成功了:

void clicked()
{

Args args;
FormRun formRun;
;
args = new Args();
args = element.args();
args.name(formStr(Form3));
args.record(SMAServiceOrderTable);

formRun = ClassFactory.formRunClass(args);
formRun.init();
formRun.run();
formRun.wait();

super();
}


public void init()
{
SMAServiceOrderTable serviceordertable;
super();
serviceordertable = element.args().record();
}
但当一个数据源和一个数据字段与StringEdit相关联时,这就可以工作了。有人能解释一下,当Form1是ExtendedDataType时,我应该如何构建它以将Form1的值传递给Form2吗


谢谢。

如果您能够使用
args.record()
将记录传递给被调用的对象(Form2),那么您还可以使用
args.parm()
传递字符串值,
args.parmEnum()
args.parmEnumType()
传递枚举值,或者使用
args.parmObject()
传递任何对象。您还可以使用args.caller(element),以便Form2可以访问Form1方法。

选项1,将args.caller(element)用于Form1实例,并在Form1中创建一个方法以返回它将工作的字符串字段的值。 选项2是重写按钮单击方法,通过代码打开Form2,此时您可以将参数传递给form。 也可以参考这个博客