2015-06-02 90 views
2

我正在使用Microsoft AX 2012.我有奇怪的問題,我從VendTrans表中獲取5條記錄的列表頁。我創建了一個方法,用於在我的表單數據源中獲取VendTrans表上的Dimension。更改記錄後字段刷新

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」。選擇所有5條記錄後的第二個記錄值爲「BBB」。

很顯然,我希望在它的字段每條記錄值,沒有任何刷新afther改變記錄...

+0

我有幾天假,我的工作,我現在試着從你的建議。如果它有效,我會接受:-) –

回答

2

你有兩個問題:

  1. 使用_vendTrans.DefaultDimension而不是VendTrans.DefaultDimension一致3.
    這就是爲什麼相同的值在所有行中,您引用活動記錄而不是網格線的記錄。
  2. 使用display method caching來提高表單的性能。

要解決這兩個移動方法將VendTrans表啓用緩存:

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