我正在使用Microsoft AX 2012.我有一个奇怪的问题,我从VendTrans表获得了5个记录的列表页面。我已经创建了一种在我的表格数据源中获取Dimension on VendTrans表的方法。
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(表),DataMethod设置为" getDimensionValue"。
现在,在我的列表页面上更改所选记录后,此字段将刷新所有记录。
例如,我的第一条记录的维度值是" AAA"并且第二个记录是" BBB"。当选择第一条记录时,所有5条记录的该字段值将为" AAA"。在选择第二记录值之后是" BBB"全部5条记录。
很明显,我希望字段中的每条记录都能获得价值,而不需要更新记录......
答案 0 :(得分:2)
你有两个问题:
_vendTrans.DefaultDimension
代替VendTrans.DefaultDimension
这就是为什么所有行都有相同的值,您引用活动记录而不是网格线的记录。要解决这两个问题,请将方法移至VendTrans
表以启用缓存:
[SysClientCacheDataMethodAttribute(true)]
public display DimensionValue getDimensionValue()
{
dimAttrValueSet = DimensionAttributeValueSet::find(this.DefaultDimension);
...
}