2010-10-21 62 views
1

我只是努力通过以下情况 - 有一个数据源添加到axapta 2009中的网格,由querybuildrange过滤。标记筛选网格中的特定数据集

我想通过

datasource_DS.findrecord(specificRecord) 

标记由X ++特定的数据集以此为意,取出过滤器,但不具有过滤器激活的作品! 解决方法删除筛选器并将所有内容(筛选!)首先添加到临时表不是我想要的。

我无法想象有没有办法完成这项任务?! 在此先感谢!

编辑:上形式

数据源: - ProdRouteJob(JoinSource:ProdTable,链接类型:InnerJoin) - ProdTable

含有特定ProdStatus仅数据集应显示在网格中。 这是由提到的范围内进行,例如:

prodStatusRange = prodTable_ds.query().dataSourceTable(tablenum(ProdTable)).addRange(fieldnum(ProdTable, ProdStatus)); 
prodStatusRange.value("((ProdStatus == 0) || (ProdStatus == 1))"); 

选择一个特定数据所做,例如:

ProdRouteJob currentProdRouteJob; 
; 
currentProdRouteJob = ProdRouteJob::findJobId("JOB_12345"); 
info (currentProdRouteJob.JobId); 
prodRouteJob_DS.findRecord(currentProdRouteJob); 

的信息功能显示正确的JobId。 如果我删除过滤器,findRecord()选择数据集,如果不是 - 没有。 加入DS.research(true);不会更改此行为。

+0

以下内容并不十分清楚:“此操作按预期工作,取下过滤器,但不启用过滤器”。 陈述你的意图。 – 2010-10-21 09:13:08

+0

'findRecord'不会“标记特定的数据集”,它会选择一个特定的记录作为活动记录。 – 2010-10-21 09:18:04

+0

对第一条语句的评论:如果我运行代码,删除筛选后 - 数据集_选择_网格中的特定数据集。如果过滤器处于活动状态,则不会发生指定数据集的选择。 – Nico 2010-10-21 12:01:53

回答

0

您的目标是重绘网格并保留任何过滤。

2009年AX很容易:

datasource_DS.research(true); 

在AX 4.0和以前的你可以进行查询,然后refind:

specificRecord = datasource.data(); 
datasource_DS.research(); 
datasource_DS.findRecord(specificRecord) 

有时这可能是缓慢的,如果有网格中的多条记录。

+0

无论我是否使用您的建议代码,行为都是一样的。指定的数据集未被选中。也许,我身边有一个错误。我会发布下面的代码。 – Nico 2010-10-21 12:27:48

+0

尝试简化您的范围表达式:'prodStatusRange.value(“0,1”);' 同样在范围更改之后,必须运行'ds.executeQuery()'。 ''ds.executeQuery()'或'ds.research()'必须放在'findRecord'之前才能生效。 – 2010-10-25 08:30:01