View 如何基于具有动态范围的查询刷新/同步视图?
我有一个带有查询的简单视图,我的自定义查询有一个动态范围 在类View 如何基于具有动态范围的查询刷新/同步视图?,view,axapta,synchronized,dynamics-ax-2012,x++,View,Axapta,Synchronized,Dynamics Ax 2012,X++,我有一个带有查询的简单视图,我的自定义查询有一个动态范围 在类SysQueryRangeUtil中,我插入了一个自定义公共静态方法,并将其复制到自定义查询中。 这个范围很好用。但是我有一个问题,当范围条件改变时,如果我想看到新的视图(带有新选择的记录),我必须在AOT我的视图中同步 但是这个操作不能对一个简单的系统用户执行 有没有一种方法可以在视图中使用动态范围而不经常同步 我的动态范围与curUserId()当更改打开表单/视图的用户时,视图必须更改显示的记录有关。如果我想看到差异,我必须每次
SysQueryRangeUtil
中,我插入了一个自定义公共静态方法,并将其复制到自定义查询中。
这个范围很好用。但是我有一个问题,当范围条件改变时,如果我想看到新的视图(带有新选择的记录),我必须在AOT我的视图中同步
但是这个操作不能对一个简单的系统用户执行
有没有一种方法可以在视图中使用动态范围而不经常同步
我的动态范围与curUserId()
当更改打开表单/视图的用户时,视图必须更改显示的记录有关。如果我想看到差异,我必须每次同步,但对我来说,这不是一个可用的解决方案
MyView
谢谢大家 不要在查询中使用范围,请在表单级别移动此逻辑 在表单的
classDeclaration
方法中声明类型为QueryBuildRange
的变量
重写表单数据源上的init
方法:
public void init()
{
;
super();
queryRange = Table1_ds.query().addRange(MyView_ds.queryBuildDataSource(), AccountNum);
queryRange.status(RangeStatus::Hidden);
}
public void executeQuery()
{
;
queryRange.value(filterBycurUserId());
super();
}
重写表单数据源上的executeQuery
方法:
public void init()
{
;
super();
queryRange = Table1_ds.query().addRange(MyView_ds.queryBuildDataSource(), AccountNum);
queryRange.status(RangeStatus::Hidden);
}
public void executeQuery()
{
;
queryRange.value(filterBycurUserId());
super();
}
谢谢@Aliaksandr Maksimau。但是我需要用ctrl+G过滤这个值。用这种方法我不能这样做,但如果我使用RangeStatus::Locked或Open,我允许对表单执行自由查询。请使用
Table1\u ds.query().addQueryFilter()
而不是addRange
。所有用户ctrl-G都是过滤器,而不是范围。谢谢@Aliaksandr Maksimau。