テーブルには、1つの日付フィールドがあります。 formAとformBの2つのフォーム名があり、formAにはテキストボックスとボタンがあります。 formBには、日付フィールドを持つグリッドがあります。ax 2012のフォームから別のフォームに引数を渡す方法
私はテキストボックスに日付を入力し、formAのボタンをクリックすると、入力した日付をformBのグリッドに割り当てる必要があります。私は両方のフォームのテーブルデータソースを追加しました。これで私を助けてください。
テーブルには、1つの日付フィールドがあります。 formAとformBの2つのフォーム名があり、formAにはテキストボックスとボタンがあります。 formBには、日付フィールドを持つグリッドがあります。ax 2012のフォームから別のフォームに引数を渡す方法
私はテキストボックスに日付を入力し、formAのボタンをクリックすると、入力した日付をformBのグリッドに割り当てる必要があります。私は両方のフォームのテーブルデータソースを追加しました。これで私を助けてください。
あなたが記述した動作はAXの点ではあまり標準的ではないようですが、通常のフォームではなくFormAとしてダイアログフォームを使用することをお勧めします。あなたがベストプラクティスを尊重し、望ましい行動がより容易に達成されるようにします。
日付フィールドでRunBaseクラスを拡張するクラスを作成します。ここでは
class FormADialog extends RunBase
{
DialogField fieldDate;
TransDate transDate;
}
たちはフォームコントロールを構築する方法である:
protected Object Dialog()
{
Dialog dialog = super();
fieldDate = dialog.addField(extendedTypeStr(TransDate), 'Date');
return dialog;
}
次のメソッドは、ダイアログから値を取得します:
public boolean getFromDialog()
{
transDate = fieldDate.value();
return super();
}
を
処理ロジックはここにあります:
public void run()
{
FormBTable formBTable;
ttsbegin;
select firstOnly forUpdate formBTable;
formBTable.Date = transDate;
formBTable.write();
ttscommit;
}
唯一欠けているものは、ダイアログクラスのエントリポイントは、(フォームAを表します)です:
public static void main(Args _args)
{
FormADialog formADialog = new FormADialog();
FormDataSource formDataSource;
if (formADialog.prompt())
{
formADialog.run();
// FormB should contain menu item for dialog class for the following code
if (args && args.record() && args.record().dataSource())
{
formDataSource = args.record().dataSource();
formDataSource.research();
}
}
}
今すぐダイアログボタンをクリックすると、グリッドを更新します。
2つの正規形でアプローチを使用することを主張する場合。私はlinkActive()
メソッドを2番目のフォームのデータソースで考えると思います。 Tutorial Form Dynalinkをご覧ください。親フォームのレコードの変更により子フォームに通知され、linkActiveメソッドが呼び出され、子テーブルのデータソースでexecuteQueryメソッドが呼び出されます。
次のような別の方法があります。
ある形式から別の形式にパラメータを渡す場合は、特別なクラスArgが通常使用されます。 FormBの初期化に耳を傾けなければならないエンドポイントを受け取る
void clicked()
{
Args args;
FormRun formRun;
args = new Args();
args.parm(dateField.text());
args.name(formStr(FormB));
formRun = classFactory.formRunClass(args);
formRun.init();
formRun.run();
formRun.wait();
super();
}
()メソッド:
public void init()
{
Date passedValue;
super();
// check presence
if (element.args())
{
passedValue = str2Date(element.args().parm(), 123);
}
}
シェア
イニシエータフォームは、ボタンコントロールの)(クリックメソッド内で転送するデータを準備しますあなたのコードはこちら – Mangesh
[Axaptaの2つのフォームの間でパラメータを渡す方法は?](http://stackoverflow.com/questions/11258375/how-to-pas) s-a-parameter-two-forms-in-axapta) – zadorski