gpt4 book ai didi

lookup - 动态 AX 2009 : Displaying a name instead of an ID in a lookup field

转载 作者:行者123 更新时间:2023-12-01 15:08:06 29 4
gpt4 key购买 nike

我正在 AX 2009 中的一个表单上创建一个项目。有一个名为“SubsPersonName”的查找字段,它使用以下方法对 ContactPerson 表执行查找。

public void lookup()
{
boolean ret;
Query query;
QueryBuildDataSource querybuilddatasource;
QueryBuildRange querybuildrange;
SysTableLookup sysTableLookup;
CustInvoiceAccount _thisinvoiceaccount = CustTable::find(CustTable::find(TTN_CustVendSubscriptions.AccountNum).InvoiceAccount).PartyId;
CustAccount _thisaccountnum = CustTable::find(TTN_CustVendSubscriptions.AccountNum).PartyId;
;

//TODO: Lookup value should read ContactPerson.Name, not ContactPerson.ContactPersonId
sysTableLookup = SysTableLookup::newParameters(tablenum(ContactPerson), this);
sysTableLookup.addLookupfield(fieldnum(ContactPerson, Name));
sysTableLookup.addLookupfield(fieldnum(ContactPerson, ContactPersonId), true);
sysTableLookup.addLookupfield(fieldnum(ContactPerson, CustAccount));
sysTableLookup.addLookupfield(fieldnum(ContactPerson, VendAccount));
query = new Query();
querybuilddatasource = query.addDataSource(tablenum(ContactPerson));
querybuildrange = querybuilddatasource.addRange(fieldnum(ContactPerson, Name));
querybuildrange = querybuilddatasource.addRange(fieldnum(ContactPerson, OrgPartyId));
if (!_thisinvoiceaccount)
_thisinvoiceaccount = _thisaccountnum;
querybuildrange.value(strfmt("%1,%2", _thisinvoiceaccount,_thisaccountnum));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}

上面的代码工作正常,但我需要稍微调整一下。根据此代码,需要插入数据库的值是 ContactPerson.ContactPersonId,但我希望表单中的字段显示 ContactPerson.Name。

我意识到我可以使用显示方法来显示它,根据这个问题:Axapta: Lookup field display the string value instead of the ID? ,但这将涉及一个不必要的额外字段,我希望尽可能避免。

有人能给我指出正确的方向吗?

最佳答案

为了使 ContactPersonId 字段在查找中不可见,但仍将其保留为返回值,更改类 SysTableLookup 方法:

void addLookupfield(fieldId _fieldId, boolean _returnItem = false, boolean _visible = true)
{
lookupItems += [[_fieldId, _returnItem, '', _visible]];
}

同时更改 buildGrid 方法以更改字段可见性。

然后像这样更改您的代码:

sysTableLookup.addLookupfield(fieldnum(ContactPerson, ContactPersonId), true, false)

另见 Axaptapedia .

关于lookup - 动态 AX 2009 : Displaying a name instead of an ID in a lookup field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8309082/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com