手动添加过滤器时如何在表单数据源上保留范围?

时间:2013-01-23 10:09:50

标签: axapta x++ ax range

我在表单上有一个奇怪的问题:我添加了一个范围来过滤数据源executeQuery()方法中的记录,这在打开表单时工作正常但如果我在网格标题中手动设置过滤器,则在ExecuteQuery()中设置范围方法不适用。我的范围定义如下:

this.query.dataSourceNo(1).AddRange(fieldnum(MyTable,MyField)).Value('MyRangeValue');

我使用视图作为表单DataSource,可能是它的问题。 任何想法总是应用范围并保持甚至在网格上手动添加过滤器? 谢谢你的帮助

1 个答案:

答案 0 :(得分:4)

您必须在super()中的executeQuery()之前应用过滤器。

但我认为您的问题是每次运行executeQuery()时都会添加过滤器,从而导致生成的SQL表达式中出现OR。

这是做到这一点的方法:

QueryBuildRange qr = SysQuery::findOrCreateRange(this.query.dataSourceNo(1), fieldnum(MyTable,MyField));
qr.value(queryValue('MyRangeValue'));
qr.status(RangeStatus::Locked); // Or ::Hidden