Javascript 页面提交后将焦点设置为IG中以前选定的行

Javascript 页面提交后将焦点设置为IG中以前选定的行,javascript,oracle-apex,Javascript,Oracle Apex,下面是它的基本外观: 每当我在左侧的交互网格上选择一行时,选择更改[Interactive Grid]动态动作就会触发并在右侧的交互网格上加载一些信息 我可以在上面添加新行,我希望,在我点击图片上没有显示的Save(保存)后,但它在Copy(复制)按钮的上方一点,页面加载时会触发一个动态动作,并选择左侧交互网格上先前聚焦的行 我找到了.closestselector函数来尝试它,如下所示: $(".getRowId").on('click',function() {

下面是它的基本外观:

每当我在左侧的交互网格上选择一行时,选择更改[Interactive Grid]动态动作就会触发并在右侧的交互网格上加载一些信息

我可以在上面添加新行,我希望,在我点击图片上没有显示的Save(保存)后,但它在Copy(复制)按钮的上方一点,页面加载时会触发一个动态动作,并选择左侧交互网格上先前聚焦的行

我找到了.closestselector函数来尝试它,如下所示:

$(".getRowId").on('click',function()
        {
            var currentRow = $(this).closest('tr');
            alert(currentRow.attr('id'));
        }
                     );
我在页面加载中使用的函数是:

$(document).ready(function()
    {
        $(currentRow(id)).focus();    
    }
                 );

getRowId函数在选择更改[Interactive Grid]函数中,所以我想知道这是否就是它不起作用的原因。我是否应该在点击DA上使用该功能才能工作?

我不太明白为什么需要提交页面,我会尝试使用默认按钮保存插入并更新交互式网格。此按钮不提交页面并保留所选值

如果您需要提交页面,我认为您的解决方案如下:

$(".getRowId").on('click',function()
        {
            var currentRow = $(this).closest('tr');
            alert(currentRow.attr('id'));
        }
                     );
1-在选择上创建动态动作更改交互式网格

真正的操作是执行javascript代码

//set the static id field on your interactive grid and put the value on gridID variable
var gridID = "dept";
var ig$ = apex.region(gridID).widget();
var grid = ig$.interactiveGrid("getViews","grid");
var selectedRecord = grid.getSelectedRecords();
console.log(selectedRecord);
localStorage.setItem('lastSelectedRecord', JSON.stringify(selectedRecord));
//set the static id field on your interactive grid and put the value on gridID variable
var gridID = "dept";
var ig$ = apex.region(gridID).widget();
var grid = ig$.interactiveGrid("getViews","grid");

grid.setSelectedRecords(JSON.parse(localStorage.getItem('lastSelectedRecord')));
2-在页面加载时创建动态操作

真正的操作是执行javascript代码

//set the static id field on your interactive grid and put the value on gridID variable
var gridID = "dept";
var ig$ = apex.region(gridID).widget();
var grid = ig$.interactiveGrid("getViews","grid");
var selectedRecord = grid.getSelectedRecords();
console.log(selectedRecord);
localStorage.setItem('lastSelectedRecord', JSON.stringify(selectedRecord));
//set the static id field on your interactive grid and put the value on gridID variable
var gridID = "dept";
var ig$ = apex.region(gridID).widget();
var grid = ig$.interactiveGrid("getViews","grid");

grid.setSelectedRecords(JSON.parse(localStorage.getItem('lastSelectedRecord')));

此处测试单击Save22按钮

当您单击此按钮Save时,会执行更多操作吗?或者只是保存交互式网格的过程?如果只是交互式网格的过程,为什么要提交页面?交互式网格的默认按钮“保存”不提交页面,并保留选定的值。查看此页面,“保存”是一个默认按钮。Save22是提交页面的自定义按钮。此链接来自示例应用程序。他们建议禁用此默认保存按钮并使用此自定义按钮。但正如您所看到的,默认的save按钮可以工作,并将更改保存到两个交互式网格中……我现在使用的save按钮提交页面以运行Insert或updatepl/SQL进程。我正试图找到一种方法来保存左侧选定的行,并在提交后再次加载页面时自动将其选中。我还尝试了一些其他的想法,比如使用getSelectedRecords函数,但我不会在再次加载页面时保存这些选定行以使用setSelectedRecords。目前,每当单击save按钮更新Oracle中的表时,都会运行一个进程。现在我尝试了这两种动态操作的代码,尽管页面没有加载。我得到一个uncaughttypeerror错误:无法读取null的属性“length”。是否因为加载页面时字符串为空?不过,考虑到带有Save22按钮的演示网站正常工作,这就没什么意义了。我已经有了一个选择更改操作,该操作可能具有优先权,而使用此代码的第二个操作没有执行。现在它就像一个符咒!很好,可能需要修改一些代码。请注意,我使用的是localstorage,存储的记录保留了一段时间,我不知道保留了多少。可能需要将会话添加到用于存储记录的项的名称中,以便localStorage.getItem'&APP_session.lastSelectedRecord'在setItem中保持相同。这将限制将这些保存的记录与localStorage一起仅用于用户所在的会话。在另一个会话中,记录将不存在…我现在正试图在关闭其模式对话框页面时使所选行也保持保存状态。当我关闭页面并再次输入时,其中一个文件设法保留其选定行,但所有其他文件都没有。它们在保存和提交后保留所选行,但在关闭后再次访问相同的模式对话框则不会。我将查看将会话添加到其中是否有效。如果需要清除最后选定的记录,可以使用此选项。您需要了解什么是本地存储。。。正如我所说,需要对完整的解决方案进行一些更改,但这取决于应用程序的工作方式。。。