2009-12-12 56 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; 
}