2009-12-12 54 views
1

在我的其他方法(數據,文本等)中,setItem方法可以正常工作以顯示對樹項目所做的更改。但是,更改項目圖標後調用setItem似乎沒有任何作用。更新樹項目以便出現新圖標的最佳方法是什麼?Axapta:在圖像更改後更新FormTreeControl

感謝

public void modified() 
{ 
    FormTreeItem workingItem; 
    ; 
    super(); 

    //find the current item 
    workingItem = FormTreeControl.getItem(FormTreeControl.getSelection()); 
    //update the value 
    workingItem.Image(1); 
    //update the item in the list 
    FormTreeControl.setItem(workingItem); 

} 

回答

1

發現一對夫婦的問題在這裏:
1.沒有找到一個有效的辦法來更新樹項目的圖標。
2.如果嘗試從數據源方法中添加/刪除,發現某些樹控制對象未初始化,因此刪除項會引發對象未初始化錯誤。

修復方法:
1.創建一個新項目(舊項目的addAfterIdx)。
2.刪除舊項目。
3.選擇新項目。
3.將該方法從數據源移動到實際的表單控件。

這裏是爲我工作的代碼:

public boolean modified() 
{ 
    boolean ret; 
    FormTreeItem workingItem = FormTreeControl.getItem(currentEditingIdx); 
    TreeItemIdx newItemIdx; 
    ; 
    ret = super(); 

    //create a new item 
    newItemIdx = SysFormTreeControl::addTreeItem(FormTreeControl, workingItem.text(), FormTreeControl.getParent(workingItem.idx()), workingItem.data(), element.imageIdx(ABC_Icon.text())); 
    //delete the old item 
    FormTreeControl.delete(currentEditingIdx); 
    //select the new item 
    FormTreeControl.selectionChanged(FormTreeControl.getItem(FormTreeControl.getRoot()), FormTreeControl.getItem(newItemIdx), FormTreeSelect::Unknown); 

    return ret; 
}