【问题标题】:Axapta: Update FormTreeControl after image changeAxapta:图像更改后更新 FormTreeControl
【发布时间】:2009-12-12 07:21:34
【问题描述】:
在我的其他方法(数据、文本等)中,setItem 方法可以很好地显示对树项所做的更改。但是,在更改项目图标后调用 setItem 似乎没有任何效果。更新树项以显示新图标的最佳方法是什么?
谢谢
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);
}
【问题讨论】:
标签:
icons
axapta
treecontrol
【解决方案1】:
在这里发现了几个问题:
1. 从未找到有效更新树项图标的方法。
2. 如果尝试从数据源方法中添加/删除,发现某些树控件对象未初始化,因此删除项目会引发 Object Not Initialized 错误。
通过以下方式修复它:
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;
}