2017-07-04 68 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)解决了上述问题。