以下方法删除包。问题是项目浏览器永远不会刷新。调用Repository.RefreshModelView(0)强制更新,但它重新打开模型并杀死脚本执行。
以下是方法:
function clearPackage( pkg ) {
var parent as EA.Package;
parent = Repository.GetPackageByID(pkg.ParentID);
var pkgList as EA.Collection;
pkgList = parent.Packages;
for (var i = 0; i < pkgList.Count; i++) {
var p as EA.Package;
p = pkgList.GetAt(i);
if (p.PackageGUID == pkg.PackageGUID) {
pkgList.Delete(i);
pkgList.Refresh();
parent.Update(); // have tried with and without
return;
}
}
}
在pkgList.Refresh之前和之后检查pkgList.Count确实显示了大小的变化。同样,问题似乎仅限于项目浏览器。
有关如何刷新项目浏览器的任何想法?
交叉发布于Sparx Forums。
答案 0 :(得分:3)
要删除包,您只需要删除包本身。抱歉Perl,但那是我的驴子: - )
my $p = $rep->GetTreeSelectedObject();
my $par = $rep->GetPackageByID ($p->ParentID);
my $idx = 0;
for my $sp (in $par->Packages) {
if ($sp->PackageID == $p->PackageID) {
$par->Packages->DeleteAt ($idx, 1);
last;
}
$idx++;
}
$rep->RefreshModelView ($par->PackageID);
答案 1 :(得分:3)
尝试
Repository.RefreshModelView(parent.PackageID);
这将只刷新父包的内容,而不是整个模型。