在列表页表单中添加显示方法

Add display method in a listpage form

我想在列表页表单的数据源中添加一个显示方法。我无法直接添加,因为数据源来自 AOT 查询。我该怎么做? 提前感谢您的帮助。 显示方式:

public display String255 UserNames()
{
    DirPartyName        partyName;
    DirPersonUser       personUser;
    DirPerson           person;
    UserInfo            userInfo;
    String255           userList = "";



    partyName = DirPersonUser::userId2Name(this.UserId);

    if(partyName)
    {
        while select Name from person
            exists join personUser
                where personUser.PersonParty == person.RecId
                    && personUser.User == this.UserId
        {
            userList += person.Name + ",";
        }
    }

    if (!partyName)
    {
        while select Name from userInfo 
            where userInfo.Id == this.UserId
        {
            userList += userInfo.name + ",";
        } 
    }
        partyName = (select firstonly Name from userInfo where userInfo.Id == this.UserId).Name;
    if (!partyName)
        userList += this.UserId + ",";

    strDel(userList,strLen(userList),1);
    return userList;
}

为什么不尝试在 table 方法中编写显示方法,因为在列表页中使用相同的方法?那是个不错的选择。 如果您仍然想在表单数据源级别编写显示方法,请像下面这样更改您的显示方法。

public 显示 String255 UserNames(DataSourcetablename _tableName) { ....

在你使用 "this" 的地方使用 _tableName。

你可以参考标准Ax 2012中的PurchEditLines表格看看 显示 ImageRes backOrder(PurchParmLine _purchParmLine).

更多展示方式click here

我有同样的要求,我们在 table TrvExpTable 中使用一个真实的物理字段,然后 table 我们在打开列表页面时填写它。

在 init() 中,在 super() 之前,您可以调用该方法的形式:

public void updateTrvExpTableApprovers()
{
    TrvExpTable             trvExpTable;
    TrvExpTrans             trvExpTrans;
    WorkflowWorkItemTable   workflowItemTable;
    String255               approversNames;
    HcmWorker               HcmWorker;
    DirPersonUser           dirPersonUser;
    Name                    name;

    ttsBegin;
    while select forUpdate trvExpTable where trvExpTable.ApprovalStatus == TrvAppStatus::Pending
    {
        approversNames = "";
        while select userId from workflowItemTable
            where workflowItemTable.RefRecId == trvExpTable.RecId &&
                  workflowItemTable.RefTableId == trvExpTable.TableId &&
                  workflowItemTable.Status == WorkflowWorkItemStatus::Pending
        {
            select firstonly hcmWorker
                join firstonly PersonParty, ValidFrom, ValidTo from dirPersonUser
                    where dirPersonUser.User == workflowItemTable.userId &&
                            hcmWorker.Person == dirPersonUser.PersonParty;
            name = HcmWorker.name();

            if (!name)
            {
                name = workflowItemTable.userId;
            }

            if(approversNames)
            {
                if (!strScan(approversNames, name, 0, 255))
                {
                    approversNames += ', ' + name;
                }
            }
            else
            {
                approversNames = name;
            }
        }

        trvExpTable.ApproversNames = approversNames;
        trvExpTable.update();
    }

    update_recordSet trvExpTable
        setting ApproversNames = ""
        where trvExpTable.ApprovalStatus != TrvAppStatus::Pending && trvExpTable.ApproversNames != "";

    ttsCommit;
}

这不是最有效的方法,但在我们的案例中,它已经运行了一年多了。

此外,用户可以在网格中的该字段上按 CTRL+G,这不是使用显示方法的选项。

此致, 克里斯蒂安