怎样在下拉框中显示有过滤条件的数据

比如要在下拉框中显示ItemID,但是只显示ItemGroup='Group1' ItemType='Bom'的物项,那么传统的使用扩展类型的方法就不使用了,因为扩展类型不能动态传递参数(ItemgroupITEMTYPE)。

 

方法1

InventTable里建立一个方法,lookupItemByItemTypeGroup

client static void lookupItemByItemTypeGroup(FormStringControl lookupCtrl,

ItemGroupId ItemGroupId,ItemType _ItemTYpe=ItemType::BOM)

{

       SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(InventTable), lookupCtrl);

       //若使用方法2,则LookupCtrl 改为 this.代表当前控件

       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);//若值不是String,则需要用函数QueryValue()转换。

       QueryBuildRange1.value(enum2str(_ItemTYpe));

 

       sysTableLookup.addLookupfield(fieldNum(InventTable, ItemId));

       sysTableLookup.addLookupfield(fieldNum(InventTable, ItemName));

 

       sysTableLookup.parmQuery(query);

       sysTableLookup.performFormLookup();

}

 

第二步,重载下拉框的lookup的方法。

public void lookup()

{

       // super();//注意,一定要注释,意思是不执行父类的方法而执行当前类的方法,若不注释则出现两个下拉框。

       ;

       inventtable::lookupItemByItemTypeGroup(this,'Group1',ItemType::BOM);

}

 

方法2,就是直接在控件的lookup方法下写上面的代码,这样就没有扩展性,但是有的时候还是可以选择。

另外,值得注意的是:

当下拉框需要从多个表过滤条件时,上面的方法就不起作用了。这个时候,我们需要建立一个View,然后把view当作表使用上面的方法,就可以实现了。

比如我们要在下拉框中选择工单,条件是ITemGroupID"Group1"的物项,这样就需要关联两个表,过滤InventtableItemGroupID.

若有问题可以提问,我再回答,但是,只要自己思考一下的话,一般不是问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fandyx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值