更改记录后字段刷新
Field refreshing after changing record
我正在使用 Microsoft AX 2012。我遇到了一个奇怪的问题,我从 VendTrans table 获得了包含 5 条记录的列表页面。我在表单数据源中创建了一种在 VendTrans table 上获取维度的方法。
public display DimensionValue getDimensionValue(VendTrans _vendTrans)
{
dimAttrValueSet = DimensionAttributeValueSet::find(VendTrans.DefaultDimension);
select dimAttrValueSetItem
where dimAttrValueSetItem.DimensionAttributeValueSet == dimAttrValueSet.RecId
join dimAttrValue
where dimAttrValue.RecId == dimAttrValueSetItem.DimensionAttributeValue
join dimAttribute
where dimAttribute.RecId == dimAttrValue.DimensionAttribute
&& dimAttribute.Name == 'NAME';
return dimAttrValue.getValue();
}
在我的表单上创建了一个字段。数据源设置为 VendTrans (table),DataMethod 设置为 "getDimensionValue"。
现在在我的列表页面上更改所选记录后,此字段会刷新所有记录。
例如,我的第一条记录的维度值为 "AAA",第二条记录的维度值为 "BBB"。选择第一个记录时,所有5个记录的此字段值将为"AAA"。选择第二条记录后,所有 5 条记录的值为 "BBB"。
很明显,我想要它的字段中每条记录的值,更改记录后无需刷新...
你有两个问题:
- 在第 3 行中使用
_vendTrans.DefaultDimension
代替 VendTrans.DefaultDimension
。
这就是为什么所有行中的值相同,您引用的是 active 记录而不是网格线的记录。
- 使用 display method caching 提高表单的性能。
要修复这两个问题,请将方法移动到 VendTrans
table 以启用缓存:
[SysClientCacheDataMethodAttribute(true)]
public display DimensionValue getDimensionValue()
{
dimAttrValueSet = DimensionAttributeValueSet::find(this.DefaultDimension);
...
}
我正在使用 Microsoft AX 2012。我遇到了一个奇怪的问题,我从 VendTrans table 获得了包含 5 条记录的列表页面。我在表单数据源中创建了一种在 VendTrans table 上获取维度的方法。
public display DimensionValue getDimensionValue(VendTrans _vendTrans)
{
dimAttrValueSet = DimensionAttributeValueSet::find(VendTrans.DefaultDimension);
select dimAttrValueSetItem
where dimAttrValueSetItem.DimensionAttributeValueSet == dimAttrValueSet.RecId
join dimAttrValue
where dimAttrValue.RecId == dimAttrValueSetItem.DimensionAttributeValue
join dimAttribute
where dimAttribute.RecId == dimAttrValue.DimensionAttribute
&& dimAttribute.Name == 'NAME';
return dimAttrValue.getValue();
}
在我的表单上创建了一个字段。数据源设置为 VendTrans (table),DataMethod 设置为 "getDimensionValue"。
现在在我的列表页面上更改所选记录后,此字段会刷新所有记录。
例如,我的第一条记录的维度值为 "AAA",第二条记录的维度值为 "BBB"。选择第一个记录时,所有5个记录的此字段值将为"AAA"。选择第二条记录后,所有 5 条记录的值为 "BBB"。
很明显,我想要它的字段中每条记录的值,更改记录后无需刷新...
你有两个问题:
- 在第 3 行中使用
_vendTrans.DefaultDimension
代替VendTrans.DefaultDimension
。
这就是为什么所有行中的值相同,您引用的是 active 记录而不是网格线的记录。 - 使用 display method caching 提高表单的性能。
要修复这两个问题,请将方法移动到 VendTrans
table 以启用缓存:
[SysClientCacheDataMethodAttribute(true)]
public display DimensionValue getDimensionValue()
{
dimAttrValueSet = DimensionAttributeValueSet::find(this.DefaultDimension);
...
}