我使用光滑网格显示项目列表。
该列表是使用$.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行。
更新1:
刚检查一下,如果我添加按钮并将其click事件与上面的函数绑定,滚动就会神奇地起作用。 但是,我不确定在创建网格之后调用函数时我做了什么错误? 请帮忙。
可能是错误,因为功能在页面上工作但在jquery-ui对话框上没有吗?
更新2:
我创建了新的MVC3应用程序并尝试实现相同的功能 - 通过$ .ajax调用LoadData函数并填充光滑的网格,然后尝试选择默认ID。
我意识到只有当网格在jquery-ui对话框中时才会出现问题。 页面上的相同网格正常工作。
可能是一个错误,光滑的网格滚动在页面上工作而不是在由ajax调用加载的对话框中?
如果我需要分享示例代码,请帮助并告诉我。
更新3:
添加了示例代码。任何帮助将不胜感激!!
https://groups.google.com/forum/#!topic/slickgrid/CUjY3H1F_zM
答案 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毫秒的延迟对我来说已经成功了。
截至目前,应用解决方法,但肯定期待更好的解决方案。