将表单中的值传递给视图中的方法

时间:2017-05-15 18:18:03

标签: axapta x++ dynamics-ax-2012-r2

我有一个包含货件表数据源的视图。此视图有一个包含查询的方法。此查询获取货件ID,并从此货件的销售线表中返回销售ID。此视图具有计算字段,该字段是查询的输出。然后在表单上使用计算字段。

如果我对货件ID进行硬编码,则流程正常运行。我的问题是如何从货件列表中动态获取货件ID。例如,我有一个列出所有货件的表格。我想在货件ID旁边放置一个字段,其中包含上述流程中计算的销售ID。

底线:我希望网格的第一列是货件ID,第二列是第一列中货件的销售ID。

这是上述方法的一个示例,其中包含查询:

private static server str findSalesLine()
{
    WMSShipment     wmsShipment;
    WMSOrderTrans   wmsOrderTrans;
    SalesLine       salesLine;

    select wmsShipment
    join wmsOrderTrans
    where wmsShipment.shipmentId == '1040383'
    && wmsShipment.shipmentId == wmsOrderTrans.shipmentId
    join salesId from salesLine
    where salesLine.LineNum == wmsOrderTrans.inventTransRefLineNum
    && salesLine.SalesID == wmsOrderTrans.inventTransRefID
    && salesLine.ExternalItemId != '';

    return salesLine.SalesId;
}

2 个答案:

答案 0 :(得分:0)

我认为您要查找的是查询范围(https://msdn.microsoft.com/en-us/library/aa638454.aspx)或显示方法(https://msdn.microsoft.com/en-us/library/aa595058.aspx

您还有更多细节或示例代码吗?

答案 1 :(得分:0)

我会使用类似于下面的计算列。我的环境与您不同,因此SQL在我的盒子上无效,但它应该适用于您的。

在视图中添加一个新的字符串计算列,然后将此方法设置为datamethod。

public static server str getSalesId()
{
    tableName       viewName = tableStr(testView);//name of your view
    DataSourceName  wmsShipmentDsName = identifierStr(WMSShipment);//change if your dsname is different on your view
    str returnStr;

    returnStr = 
    " SELECT G1.SALESID FROM SALESLINE G1 " + //don't use "T1 T2" etc as aliases on computed columns
        " JOIN WMSORDERTRANS G2 ON " +
            " G1.LINENUM = G2.INVENTTRANSREFLINENUM AND " +
            " G1.SALESID = G2.INVENTTRANSREFID AND " +
            " SALESLINE.EXTERNALITEMID <> '' " +
        " WHERE G2.SHIPMENTID == " + 
        SysComputedColumn::returnField(viewName, wmsShipmentDsName, fieldStr(WMSShipment, ShipmentId));

    return returnStr;
}