Oracle apex 有没有标准的方法可以访问interactiveGrid小部件';s和子部件';方法?

Oracle apex 有没有标准的方法可以访问interactiveGrid小部件';s和子部件';方法?,oracle-apex,Oracle Apex,我正在使用Oracle AEPX 20.2。在左侧面板的顶部,有许多小部件。我假设它们都是interactiveGrid小部件的子小部件,除了treeview小部件,对吗?如果是对的还是错的,有没有一种标准的方式让我访问这些小部件的方法? 我尝试了apex.region(“regionStaticId.call('methodName');,但它似乎只允许访问interactiveGrid小部件的方法。您的意思是: apex.region("my_ig").call(&quo

我正在使用Oracle AEPX 20.2。在左侧面板的顶部,有许多小部件。我假设它们都是
interactiveGrid
小部件的子小部件,除了
treeview
小部件,对吗?如果是对的还是错的,有没有一种标准的方式让我访问这些小部件的方法?
我尝试了
apex.region(“regionStaticId.call('methodName');
,但它似乎只允许访问interactiveGrid小部件的方法。

您的意思是:

apex.region("my_ig").call("getActions").invoke("save");
在这里你可以找到关于IG的博客系列


对。
.call
只允许您访问主小部件--
interactiveGrid
小部件。使用
.call
可以调用刷新、聚焦、调整大小等功能。这些方法可以调用所有的IG视图。它们非常通用。但最重要的是,
interactiveGrid小部件还包含方法
getCurrentView
getview

通过这两个函数,您将获得一个
interactiveGridView
接口的实例。最重要的是,该实例将包含对底层模型的引用,但也包含一个名为
view$
的jQuery对象,该对象指向实现更具体的jQueryUI小部件(如
grid
)的DOM元素(由默认的类似表格的视图使用)或
表格模型视图
(由详图和图标视图使用)

对于99%的情况,实际上只有网格视图可用,因此这就足够了:

apex.region('emp')。调用('getCurrentView')。查看$.grid();
如果还启用了图标视图或详细视图,则getCurrentView可能不够,因此我们必须使用
GetView
,并准确指定所需内容。因此,对于详细视图,您可以执行以下操作:

apex.region("my_ig").call("getActions").invoke("save");
apex.region('emp')。调用('GetView','detail')。视图$.tableModelView();
请注意,对于某些
detailModelView
方法,您的标记必须遵循一些准则,例如每个记录都有一个
data id
属性集。有关详细信息,请参阅文档

因为图标视图略有不同

apex.region('emp')。调用('getViews','icon')。查看$.tableModelView('getIconList')。()
它也是一个tableModelView小部件,它在内部创建了一个
iconView
小部件。要访问这个小部件,我们必须调用
getIconList
。但是,这将不会返回jQuery对象,而是返回实际的小部件(内部)实例。因此直接调用方法,而不是将它们作为字符串传入

请记住,
视图$
属性只有在您单击该视图后才可用。如果您有网格视图和图标视图,并且用户仅在网格视图中工作,图标视图将不可用。它必须首先初始化

recordView也略有不同。因为它只存在于网格视图的上下文中,所以我们可以像这样获得对它的引用:

apex.region("my_ig").call("getActions").invoke("save");
apex.region('emp')。调用('GetView','grid')。singleRowView$.recordView();
试图解释IG架构。它有点过时,例如“groupByView”还没有进入APEX(至少还没有),但它完成了这项工作


概述

var region=apex.region('emp');
var gridView=region.call('GetView','grid')。视图$;//必须已初始化
var detailView=region.call('getViews','detail')。视图$;//必须已初始化
var icondeailview=region.call('getViews','icon')。视图$;//必须已初始化
var iconViewWidget=iconDetailView.tableModelView('getIconList');
//调用不同视图的刷新方法
gridView.grid('refresh');
detailView.tableModelView(“刷新”);
iconViewWidget.refresh();

简而言之,调用这些特定的视图方法似乎没有一种“标准的方式”。对于每个视图,有不同的方法,在使用它们时要考虑不同的方面。



这是我提到的同一行代码。您正在访问“getActions”,这是interactiveGrid小部件的一种方法,但您不能调用(“getColumns”),例如,这是“iconList”小部件的一种方法。“grid”和“recordView”工作正常,但“iconList”和“detail”没有。他们抛出错误:“无法调用”小部件名称上的方法“在初始化之前"。我在单击图标视图的按钮后尝试了图标列表进行初始化,并对细节视图进行了初始化。页面渲染完成后,是否应该初始化所有视图?我想不是。我的想法可能是-为什么要加载一些可能不使用的内容?上述方法对我很有效。如果您在apex.oracle.com上创建一个测试用例,我可以d看一看。我的错误!我认为tableModelView是有效的,因为它在使用“刷新”方法时返回jQuery对象,正如您在示例按钮中看到的。产生错误的只是图标列表。我为其余小部件添加了其他按钮,希望您能给我一些使用它们的示例。ws=ESLAM_ws un=forhelp pwd=Helppwd$“H”is capital app=test page=IG@StefanHi,很抱歉耽搁了,事实上,我最初的回答是不正确的。原来没有“标准”到达不同视图的方法的方式。网格视图是清晰的。singleRowView视图是通过网格视图访问的。细节视图是清晰的,但您必须使用正确的标记。图标视图是最棘手的,因为您必须通过tableModelView,然后突然正常调用方法,而不再以jQueryUI方式调用.查看编辑后的答案,并让我知道所描述的一切是否合理。