Je suis en train de créer une partie web pour SharePoint. J'ai une partie éditeur personnalisée qui surcharge les méthodes SyncChanges() et ApplyChanges() (entre autres).
Le problème est que lorsque je clique sur OK en mode édition, la page passe en mode navigation, mais les données (propeties) qui ont été modifiées dans la partie éditeur et enregistrées dans la méthode ApplyChanges() ne sont pas mises à jour. Je dois à nouveau "entrer dans la page" (recharger sans poster à nouveau les données) pour voir les modifications apportées.
Je l'ai débogué et j'ai compris ce qu'il faisait - après avoir cliqué sur OK en mode édition, WebPart.CreateChildControls() est appelé en premier, et EditorPart.ApplyChanges() en second. Les données ont donc été mises à jour, mais les données non mises à jour ont été affichées.
Je me suis dit qu'il y avait autre chose dans ce comportement : L'ajout d'un contrôle spécifique à mon WebPart dans CreateChildControls() entraîne un mauvais ordre d'appel de WebPart.CreateChildControls() et EditorPart.ApplyChanges(). Dans mon cas, il s'agit de l'ajout des contrôles WebDataTree ou UltraWebTree (d'Infragistics), mais cela peut également se produire avec la simple TextBox ASP.NET (comme décrit en détail ici) : Fil de discussion ASP.net ).
Ainsi, si j'ajoute l'arbre, CreateChildControls() est appelé en premier et ApplyChanges en second, ce n'est donc pas réel. Je dois actualiser pour voir les modifications que j'ai apportées dans la partie éditeur.
Si je commente l'ajout de l'arbre à la collection de contrôles, ApplyChanges est appelé en premier et tout va bien (sauf que j'ai besoin de cet arbre :) )...
Quelqu'un sait-il ce qui peut provoquer ce comportement étrange ?