2017-07-04 82 views
0

我們打開定製表單代替EA元素的屬性視圖雙擊圖表或項目瀏覽器中的元素,即使用EA_OnContextItemDoubleClicked事件(我們使用show-dialog打開定製形式並返回false,以便在雙擊時不應打開屬性視圖)。在自定義表單中,我們試圖使用API​​ element.Name更新EA元素並進行更新。但問題是,當我們更新項目瀏覽器中反映的元素名稱時,如果我們打開更新EA元素的EA屬性視圖並單擊確定按鈕,更新將恢復爲舊值(舊名稱)。 請找到下面的代碼。雙擊EA元素的更新

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

哪個EA版本?這聽起來更像是你應該向Sparx報告的錯誤。 –

+0

我們正在使用EA版本12.1。如果我們使用更新查詢而不是API,我們如何反映項目瀏覽器中的更改。對於這一點,如果我們使用刷新模型視圖或包更新EA崩潰。 –

+0

你應該發佈你的代碼,以便我們可以看到你的問題可能被埋沒的地方。只是問「爲什麼它不起作用」在這裏脫離主題。 –

回答

1

你在做什麼是玩弄不安全的武器。 從來沒有使用Execute除非它是不可避免的(如果API缺乏功能,如果性能是必須的)。所以在你的代碼中,Execute沒有任何理由。在Update之前將名稱設置爲"test",並刪除Execute語句。

除此之外:t_object.ea_guid=GUID將不會執行任何操作,因爲您不會有任何結果集。或者,也許它會拋出一個例外,因爲GUID不是字段。我想你的意思是

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

但是再次說明:請參閱上文!

0

使用此API repository.AdviseElementChange(element.ElementID)解決了上述問題。