更改记录后字段刷新

时间:2015-06-02 11:21:18

标签: axapta dynamics-ax-2012

我正在使用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条记录。

很明显,我希望字段中的每条记录都能获得价值,而不需要更新记录......

1 个答案:

答案 0 :(得分:2)

你有两个问题:

  1. 在第3行使用_vendTrans.DefaultDimension代替VendTrans.DefaultDimension 这就是为什么所有行都有相同的值,您引用活动记录而不是网格线的记录。
  2. 使用another answer提高表单效果。
  3. 要解决这两个问题,请将方法移至VendTrans表以启用缓存:

    [SysClientCacheDataMethodAttribute(true)]
    public display DimensionValue getDimensionValue()
    {
        dimAttrValueSet = DimensionAttributeValueSet::find(this.DefaultDimension);
        ...
    }