scrollRowIntoView无法在jquery-ui对话框中工作

时间:2014-12-01 13:09:47

标签: jquery ajax asp.net-mvc-3 jquery-ui-dialog slickgrid

我使用光滑网格显示项目列表。 该列表是使用$.ajax中的jquery-ui dialog box调用填充的。

我需要滚动到之前所选项目的位置。 因此,我使用以下功能滚动并选择以前选择的项目:

function SetDefaultItemSelected() {

        var selectedKey = 16; // hardcoded but there is logic to get previous item

        for (var rowIndex = 0; rowIndex < myItemDataView.getLength(); rowIndex++) {
            var gridRow = myItemDataView.getItem(rowIndex);
            if (gridRow.Key === selectedKey) {
                myItemGrid.setSelectedRows([rowIndex]);

                //TODO: check why the scrollRowIntoView is not working
                myItemGrid.scrollRowIntoView(rowIndex);
                break;
            }
        }

输出是这样的:

(共有22行,我之前选择了第16行) 我不确定它为什么隐藏前3行而不是滚动到第16行。

Slick Grid with data populated

更新1:

刚检查一下,如果我添加按钮并将其click事件与上面的函数绑定,滚动就会神奇地起作用。 但是,我不确定在创建网格之后调用函数时我做了什么错误? 请帮忙。

可能是错误,因为功能在页面上工作但在jquery-ui对话框上没有吗?

更新2:

我创建了新的MVC3应用程序并尝试实现相同的功能 - 通过$ .ajax调用LoadData函数并填充光滑的网格,然后尝试选择默认ID。

我意识到只有当网格在jquery-ui对话框中时才会出现问题。 页面上的相同网格正常工作。

可能是一个错误,光滑的网格滚动在页面上工作而不是在由ajax调用加载的对话框中?

如果我需要分享示例代码,请帮助并告诉我。

更新3:

添加了示例代码。任何帮助将不胜感激!!

https://groups.google.com/forum/#!topic/slickgrid/CUjY3H1F_zM

1 个答案:

答案 0 :(得分:0)

解决方法:

大家好,

我的示例代码中有2个jquery ajax调用(在问题的UPDATE 3中的google groups链接中附加):

1).load()加载空的jquery-dialog PartialView

2).ajax()调用partialView.js文件的document.ready来加载光滑的网格数据。 ( partialView.js在PartialView.cshtml 中引用)

在尝试很多事情时,我发现当我在第二个debugger;调用之前放置.ajax()并在chrome开发人员工具栏中传递此调试点时,问题似乎没有出现。

所以,我删除了debugger;,并考虑引入500毫秒的延迟

window.setTimeout(functionToBeDelayed, requiredDelay);

并且功能开始按预期运行。

我仍然不确定这些嵌套的ajax调用是如何导致该问题的。但是,截至目前,500毫秒的延迟对我来说已经成功了。

截至目前,应用解决方法,但肯定期待更好的解决方案