我想在listpage表单的数据源中添加一个display方法。我无法直接添加,因为数据源来自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;
}
答案 0 :(得分:0)
为什么不尝试在表格方法中编写显示方法,因为在列表页面中使用相同的方法?这是个不错的选择。 如果您仍想在表单数据源级别编写显示方法,请更改您的显示方法,如下所示。
public display String255 UserNames(DataSourcetablename _tableName) {....
在任何地方使用_tableName"这"。
您可以参考标准Ax 2012中的PurchEditLines表格并查看 显示ImageRes backOrder(PurchParmLine _purchParmLine)。
有关显示方法click here
的详细信息答案 1 :(得分:0)
我有同样的要求,我们在表格TrvExpTable中使用了一个真实的物理字段,我们在打开列表页面时将其填入表格中。
在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,这不是使用显示方法的选项。
最诚挚的问候, 克里斯蒂安