作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 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/
我是一名优秀的程序员,十分优秀!