2017-07-04 5 views
0

Wir öffnen das Customized Form anstelle der Eigenschaften Ansicht von EA Element bei Doppelklick auf ein Element im Diagramm oder Projekt Browser dh mit EA_OnContextItemDoubleClicked Event (Wir verwenden Show-Dialog, um das angepasste zu öffnen form und Rückgabe false, so dass die Eigenschaftenansicht nicht mit Doppelklick geöffnet werden soll. Im angepassten Formular versuchen wir das EA-Element mit dem API-Element zu aktualisieren und zu aktualisieren. Das Problem tritt jedoch auf, wenn wir den Elementnamen aktualisieren, der im Projektbrowser angezeigt wird, aber wenn wir die EA-Eigenschaftenansicht des aktualisierten EA-Elements öffnen und auf OK klicken, wird das Update auf den alten Wert (Alter Name) zurückgesetzt. Den Code finden Sie unten.Update auf Doppelklick von EA Element

public virtual bool EA_OnContextItemDoubleClicked(EA.Repository Repository,string GUID, EA.ObjectType ot) 
     { 
        EA.Element ele= Repository.GetElementByGuid(GUID); 
        ele.Name = "Test"; 
        ele.Update(); 

repository.AdviseElementChange(ele.ElementID); 


      } 
+0

Welche EA-Version? Das klingt eher wie ein Fehler, den Sie an Sparx melden sollten. –

+0

Wir verwenden EA Version 12.1. Wenn wir die Aktualisierungsabfrage anstelle der API verwenden, können wir die Änderungen im Projektbrowser widerspiegeln. Wenn wir die Aktualisierungsmodellansicht oder das Paketupdate verwenden, stürzt EA ab. –

+0

Sie sollten Ihren Code veröffentlichen, damit wir sehen können, wo Ihr Problem möglicherweise verborgen ist. Nur zu fragen, warum es nicht funktioniert, ist hier ein Thema. –

Antwort

1

Was Sie tun, ist mit ungesicherten Waffen zu spielen. NIE Verwenden Sie Execute, es sei denn, es ist unvermeidlich (wenn die API Funktionalität fehlt, wenn die Leistung ein Muss ist). Also in Ihrem Code hat die Execute keinen Grund. Setzen Sie den Namen auf "test" vor dem Update und entfernen Sie die Execute Anweisung.

Außerdem: t_object.ea_guid=GUID wird nie etwas tun, da Sie keine Ergebnismenge haben werden. Oder vielleicht wird es eine Ausnahme werfen, da GUID kein Feld ist. Ich glaube du meinst

Repository.Execute("Update t_object set t_object.Name='test' where t_object.ea_guid='" + GUID + "'"); 

Aber dann wieder: siehe oben!

0

Mit diesem API repository.AdviseElementChange (element.ElementID) wurde das obige Problem gelöst.