0

在我的第一个事件处理程序中,我将从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,这里我需要从SalesTable表单获得的SalesLine 表中的字段。因为在这里,这是需要触发的按钮,它会将值放入新创建的表中。

无论如何我可以将值从SalesTable 事件处理程序传递给SalesAvailableDlvDates 事件处理程序吗?

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

4

1 回答 1

1

SalesAvailableDlvDates表单事件处理程序中,您可以获得表单调用者。然后 if salesCalcAvailableDlvDatesis a SalesCalcAvailableDlvDates_SalesTableorSalesCalcAvailableDlvDates_SalesLine你可以从相应的parm方法中获取你需要的数据。

[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;
    }
} 
于 2017-06-02T13:44:04.600 回答