这一部分来自 MSDN:
某些Form上的字段,用户可以通过从另一个Form来选取值。这些控件都有一个Lookup按钮()。但用户单击这个按钮时,对应的Lookup form就会打开。 Lookup form显示所有可能的值,并显示一些相关信息来帮助用户做正确的选择。比如,用户需要选择一个帐号,lookup form也许会显示帐号名来帮助用户选择正确的帐号。
lookup form上显示的内容取决于DataBase 表上设置的关系或字段的EDT。
Lookup forms包含以下组成部分:
相关表的TitleField1(属性TitleField1)
相关表的TitleField2(属性TitleField2)
用于建立关联关系的字段
如果这些字段有相同的,那么系统自动去除重复。
如何创建一个标准的Lookup form,请阅读Create Lookup Forms。
Lookup按钮是否可见,是由控件上的Lookup button属性控制的。
以下部分来源于:http://www.qiuhao.com/boke.asp?maxfara.showtopic.5.html
点击浏览该文件
例子里面演示了两种最常用的自定义Lookup代码用法。
Lookup窗体可以由系统自动生成,也可以通过自定义方式产生。自定义的方式很多,例子里面只演示了两种比较常用的方法。如那位网友愿意提供其他用法的代码,欢迎来邮件指教,我会将代码增加到当前工程里面去,谢谢。
本工程里面引用了Andy写的一个函数,来自http://www.qiuhao.com/dispbbs.asp?boardID=2&ID=26&page=2 。
注:导入附件不会改变Axapta原有的代码,增加了一个Form而已。
关键代码:
通过方法生成lookup:
//本函数来自andy的代码
//出处:http://www.qiuhao.com/dispbbs.asp?boardID=2&ID=26&page=2
void lookupItemByItemTypeGroup(FormStringControl lookupCtrl,
ItemGroupId ItemGroupId,ItemType _ItemTYpe=ItemType::BOM)
{
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(InventTable), lookupCtrl);
Query query = new Query();
QueryBuildDataSource queryBuildDataSource = query.addDataSource(tableNum(InventTable));
QueryBuildRange queryBuildRange = queryBuildDataSource.addRange(fieldNum(InventTable, ItemGroupId));
QueryBuildRange queryBuildRange1 = queryBuildDataSource.addRange(fieldNum(InventTable, ItemType));
;
QueryBuildRange.value(ItemGroupId);
QueryBuildRange1.value(enum2str(_ItemTYpe));
sysTableLookup.addLookupfield(fieldNum(InventTable, ItemId));
sysTableLookup.addLookupfield(fieldNum(InventTable, ItemName));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}
public void lookup()
{
;
element.lookupItemByItemTypeGroup(this,''Lamps'',ItemType::BOM);
// super();
}
LookUp更加详细的信息可以参考微软的资料:http://msdn.microsoft.com/en-us/library/aa592952(AX.10).aspx
通过自定义Form增加Lookup内容:
详见附件里面的Form内容。
如果LOOKUP不能用,可以检查:
1:控件的LookUp属性是否被关闭了
2:检查EDT的Relation
3:查看Lookup方法