Axapta 如何在两个事件处理程序之间传递值?

Axapta 如何在两个事件处理程序之间传递值?,axapta,x++,dynamics-ax7,dynamics-365-operations,Axapta,X++,Dynamics Ax7,Dynamics 365 Operations,在我的第一个事件处理程序中,我将从SalesTable表单收集我需要的所有字段。在这个表单中,我需要从SalesLine获取这些字段。下面是我的代码: [FormEventHandler(formStr(SalesTable), FormEventType::PostRun)] public static void SalesTable_OnPostRun(xFormRun sender, FormEventArgs e) { SalesLine salesLine;

在我的第一个事件处理程序中,我将从SalesTable表单收集我需要的所有字段。在这个表单中,我需要从SalesLine获取这些字段。下面是我的代码:

[FormEventHandler(formStr(SalesTable), FormEventType::PostRun)]
public static void SalesTable_OnPostRun(xFormRun sender, FormEventArgs e)
{
      SalesLine   salesLine;
      SalesTable  salesTable = sender.dataSource(formDataSourceStr(SalesTable,salesTable)).cursor();

      select ItemId, SalesId, ShippingDateConfirmed from salesLine
         where salesLine.SalesId == SalesTable.SalesId;
}
之后,下一个事件处理程序是在另一个表单中找到的按钮的OnClick事件

[FormControlEventHandler(formControlStr(SalesAvailableDlvDates, TransferToConfirmedButton), FormControlEventType::Clicked)]
public static void TransferToConfirmedButton_OnClicked(FormControl sender, FormControlEventArgs e)
{
    //some code here
}
在另一个表单SalesAvailableDlvDates的事件处理程序中,这里我需要SalesLine表中的字段,这些字段是我从SalesTable表单获得的。因为在这里,这是需要触发的按钮,它将把值放入新创建的表中

我是否可以将值从SalesTable事件处理程序传递到SalesAvailableDlvDates事件处理程序

因为在SalesAvailableDlvDates中,我无法获取SalesLine数据。是否可以将值从一个事件处理程序传递到另一个事件处理程序?

在SalesAvailableDlvDates表单事件处理程序中,可以获取表单调用者。然后,如果SalesCalAvailableDlvDates是SalesCalAvailableDlvDates_SalesTable或SalesCalAvailableDlvDates_SalesLine,则可以从相应的parm方法中获取所需的数据


你好,阿利亚克桑德先生!非常感谢您每次回复!:关于您的答复,先生,为什么使用SalesCalAvailabledLvdate?我如何使用SalesCalAvailabledLvdates\u SalesLine语法?您好,先生,SalesCalAvailabledLvdates是一个类,SalesCalAvailabledLvdates=sender.args.caller;但是它有一个错误,在这个上下文中它是无效的。对不起,如果我不够清楚,请检查更新的答案。嗨,阿利亚克桑德先生,谢谢你!它解决了我的问题。但是,如果你能解释一下,可以吗?我不太明白它是如何工作的,以及为什么使用SalesCalAvailabledLvDates。只需查看SalesAvailableDlvDatesform的init方法。
[FormControlEventHandler(formControlStr(SalesAvailableDlvDates, TransferToConfirmedButton), FormControlEventType::Clicked)]
public static void TransferToConfirmedButton_OnClicked(FormControl sender, FormControlEventArgs e)
{
    SalesTable                              salesTable;
    SalesLine                               salesLine;
    SalesCalcAvailableDlvDates              salesCalcAvailableDlvDates;
    SalesCalcAvailableDlvDates_SalesLine    salesCalcAvailableDlvDates_SalesLine;
    SalesCalcAvailableDlvDates_SalesTable   salesCalcAvailableDlvDates_SalesTable;
    FormRun                                 formRun;
    ;

    formRun = sender.formRun() as FormRun;
    salesCalcAvailableDlvDates = formRun.args().caller();

    switch (classIdGet(salesCalcAvailableDlvDates))
    {
        case classNum(SalesCalcAvailableDlvDates_SalesLine):
            salesCalcAvailableDlvDates_SalesLine = salesCalcAvailableDlvDates as SalesCalcAvailableDlvDates_SalesLine;
            salesLine = salesCalcAvailableDlvDates_SalesLine.parmSalesLine();
            salesTable = salesLine.salesTable();
            break;

        case classNum(SalesCalcAvailableDlvDates_SalesTable):
            salesCalcAvailableDlvDates_SalesTable = salesCalcAvailableDlvDates as salesCalcAvailableDlvDates_SalesTable;
            salesTable = salesCalcAvailableDlvDates_SalesTable.parmSalesTable();
            break;

        default:
            break;
    }
}