Axapta: Mise à jour FormTreeControl après changement d'image
-
19-09-2019 - |
Question
Dans mes autres méthodes (données, textes, etc.) la méthode setItem fonctionne très bien pour afficher les modifications apportées à un élément d'arbre. Toutefois, l'appel setItem après avoir changé l'icône d'un élément ne semble pas avoir d'effet. Quelle est la meilleure façon de mettre à jour l'élément d'arborescence de sorte que la nouvelle icône apparaît?
Merci
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);
}
La solution
trouvé quelques problèmes ici:
1. Ne jamais trouvé un moyen de mettre à jour l'icône sur un élément de l'arborescence efficace.
2. trouvé quelques-uns des objets de contrôle arbre ne sont pas initialisés si vous essayez d'ajouter / supprimer à partir d'une méthode de source de données, de sorte que la suppression d'éléments jette l'objet d'erreurs non initialisés.
fixe par:
1. Créez un nouvel élément (addAfterIdx de l'ancien article).
2. Supprimez l'ancien élément.
3. Sélectionnez le nouvel élément.
3. Placer le procédé de la source de données pour le contrôle de la forme réelle.
Voici le code qui a fonctionné pour moi:
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;
}