我们打开自定义表单代替EA元素的属性视图双击图表或项目浏览器中的元素,即使用EA_OnContextItemDoubleClicked事件(我们使用show-dialog打开自定义表单并返回false,以便属性视图不应该双击打开)。在自定义表单中,我们尝试使用API element.Name更新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 :(得分:1)
你正在做的是玩无担保的武器。 从不使用Execute
,除非它不可避免(如果API缺乏功能,如果性能是必须的话)。因此,在您的代码中,Execute
没有理由。在"test"
之前将名称设置为Update
,然后删除Execute
语句。
除此之外:t_object.ea_guid=GUID
永远不会做任何事情,因为你没有任何结果集。或者它可能会引发异常,因为GUID
不是字段。我想你的意思是
Repository.Execute("Update t_object set t_object.Name='test' where t_object.ea_guid='" + GUID + "'");
但话又说回来:见上文!
答案 1 :(得分:0)
使用此API repository.AdviseElementChange(element.ElementID)解决了上述问题。