在2种形式之间传递扩展的数据类型值

时间:2018-08-10 11:54:21

标签: 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 = 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();
}

但是当将DataSource和DataField关联到StringEdit时,此方法有效。有人可以解释一下,当ExtendedDataType是ExtendedDataType时,应该如何构建它以将Form1的值传递给Form2?

谢谢。

2 个答案:

答案 0 :(得分:1)

如果您已经能够使用args.record()将记录传递给被调用对象(Form2),则还可以使用args.parm()传递字符串值args.parmEnum()和{ {1}}传递枚举值,或args.parmEnumType()传递任何对象。您还可以使用args.parmObject(),以便Form2可以访问Form1方法。

答案 1 :(得分:0)

选项1,使用args.caller(element)来form1实例,并在Form1中创建一个方法来返回将起作用的字符串字段的值。 选项2是重写按钮单击方法以通过代码打开Form2,此时您可以将参数传递给Form。 另请参阅此博客https://calebmsdax.wordpress.com/2013/02/22/passing-parameters-between-forms-in-ax/