Kendo Grid 滚动到选定的行

2023-11-25

我希望能够调用一个将 Kendo 网格滚动到所选行的函数。我已经尝试过一些方法,但没有一个有效,

例如我尝试过这个:

var grid = $("#Grid").data("kendoGrid"),
    content = $(".k-grid-content");
content.scrollTop(grid.select());

我也尝试过这个:

var gr = $("#Grid").data("kendoGrid");
var dataItem = gr.dataSource.view()[gr.select().closest("tr").index()];
var material = dataItem.id;
var row = grid.tbody.find(">tr:not(.k-grouping-row)").filter(function (i) {
    return (this.dataset.id == material);
});
content.scrollTop(row);

有人能指出我正确的方向吗? :)

--- 已编辑 ---

由于其他原因,我无法绑定到更改事件,因此我必须能够调用将列表滚动到所选行的函数。这就是我尝试使用 @Antonis 为我提供的答案。

var grid = $("#Grid").data("kendoGrid")
grid.element.find(".k-grid-content").animate({  
    scrollTop: this.select().offset().top  
 }, 400);

当我尝试此操作时,它会稍微向下滚动列表,但不会滚动到所选行。我是否通过调用scrollTop以错误的方式使用网格对象?

这个也是:

var grid = $("#ItemGrid").data("kendoGrid");
grid.scrollToSelectedRow = function () {
    var selectedRow = this.select();
    if (!selectedRow) {    
        return false;    
    }
    this.element.find(".k-grid-content").animate({
        scrollTop: selectedRow.offset().top  
    }, 400);
    return true;
    };

grid.scrollToSelectedRow();

因此,这里的大多数答案都犯了两个错误,一个只是效率问题,另一个是实际的错误。

  1. Using element.find(".k-grid-content")。这是完全没有必要的。grid.content为您提供完全相同的事情更容易(而且更快)。

  2. Using .offset()找到该行的位置。这是不正确的:这将告诉您该行相对于文档本身的位置。如果您的页面允许您滚动整个页面(而不仅仅是网格),则此数字将不正确。

    而是使用.position()– 这为您提供了相对于偏移父级的位置。为了.position()为了给你正确的数字,你的表格grid.content一定有position: relative.这最好通过 CSS 样式表来应用:

    
    .k-grid-content table {
      position: relative;
    }  

不管怎样,假设你已经有一个参考资料,我称之为grid,到网格本身,并且您将内容窗格设置为relative位置,你所要做的就是:

grid.content.scrollTop(grid.select().position().top);

或者,对于动画,

grid.content.animate({ scrollTop: grid.select().position().top }, 400);

正如已经讨论过的,grid.content为您提供内容窗格,即您想要实际滚动的部分。它是一个 jQuery 对象。

jQuery 对象有一个.scrollTop方法,所以这部分非常简单。这.animate当您使用其方法时,方法的工作原理类似scrollTop财产。现在我们只需要知道滚动到哪里to.

为了那个原因,grid.select()返回与所选行对应的 jQuery 对象。这就是你想要滚动的地方to。为了获得它的位置,我们使用 jQuery.position()方法。返回值是一个对象top and left领域;我们想要滚动到它的垂直位置,所以我们使用top.

这是最容易使用的change当然是回调;那里grid简直就是this(因为回调是在网格本身上调用的),并且change当选择更改时会自动调用。但是您可以在任何时候想要滚动到所选内容时调用此代码;你可以得到grid通过使用:

grid = $('#theGridsId').data('kendoGrid');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kendo Grid 滚动到选定的行 的相关文章

随机推荐

  • 如何在 Android 中签署 PDF

    我必须在 Android 应用程序中实现一个允许我签署 PDF 的功能 当我说 签名 时 我指的是用户附加到文档末尾的数字签名 名字和名字 我可以使用三星 Note 4 带手写笔 那么在显示屏上 书写 就不成问题了 问题是 可以使用 ite
  • 我现在应该如何使用带 PCL 或不带 PCL 的 Azure 移动服务?

    我更新到最新版本的 Xamarin 其中 完全支持 PCL 我现在如何使用 Azure 移动服务 如果我创建 PCL lib 并尝试使用 NuGet 添加它 则无法安装 Newtonsoft Json 5 0 8 因为它需要缺少 porta
  • 导出jar后没有声音

    我的应用程序有问题 当我在 Eclipse 中运行应用程序时 声音播放得很好 但如果我将应用程序导出到可运行的 jar 声音就不起作用 方法 播放声音的地方 public static synchronized void playSound
  • 使用 htaccess 重写/重定向,使单个 PHP 文件可以根据 GET/POST 变量显示数据

    请耐心等待我尝试了解有关 htaccess 重定向规则的更多信息 我是一名专业 UI 人员 我正在尽最大努力提高我的编码技能 除 HTML CSS PHP 等之外的语言 所以 我拥有的是一个包含菜单的 index php 文件 非常简单 如
  • 阻止未经所有者许可复制和使用应用程序的最佳方法是什么?

    避免应用程序在所有者不知情的情况下被复制和使用的最佳方法是什么 有什么办法可以追踪使用情况吗 这意味着应用程序会定期进行通信 并提供足够的信息 以便我们知道它在哪里以及是否合法 当然 如果它不合法 下一步就是将其关闭 打电话回家 的软件将很
  • T-SQL 相当于 Excel“MAX”函数,返回两个数字中较大的一个[重复]

    这个问题在这里已经有答案了 可能的重复 SQL Server 中是否有像 NET 中的 Math Max 一样接受两个值的 Max 函数 在 Excel 中 有一个名为 MAX 的函数 它接受数字并返回集合中最大的数字 T SQL 中是否有
  • 带有 XML 架构本地副本的 XML 文件

    我正在尝试一些 XML 架构示例 并且必须使用示例 XML 文件来验证它们 该架构是本地文件 someFile xsd 我正在使用 Eclipse 并且希望在 XML 文件中包含一个引用以指向此本地 xsd 文件 以便 Eclipse 可以
  • IE 10, 11. 如何防止带有占位符的文本输入触发焦点输入事件?

    在 IE 11 中 如果我的电子邮件为空input with a placeholder 然后单击 聚焦 它 input事件正在被触发 有谁知道为什么并且有解决方案吗 因为input值真的没有改变吗 var el document getE
  • JSX 中立即调用的函数表达式

    我正在开发 React 项目 我正在尝试编译但找不到为什么会出现此语法错误 具体来说 模式 gt 在这种情况下正在做什么 Module build failed SyntaxError Unexpected token expected 3
  • 如何用 XML 序列化子类及其基类

    我可以序列化单个类型 类 但是有没有办法也可以序列化它的基类 例如 class B A 在这里我可以序列化 B 类 但是如何序列化 A 类 A必须提前知道 即 XmlInclude typeof B public class A publi
  • 在我的 WPF 应用程序中托管 Windows Shell Explorer

    是否可以将 Windows 资源管理器文件 文件夹浏览器视图嵌入到 WPF 或 WinForms 窗口中 我基本上想将文件 文件夹浏览器作为我的应用程序窗口的一部分托管 我不想重新实现 shell 提供的功能 尤其是像 TortoiseSV
  • 如何使用javascript突出显示文本

    有人可以帮助我使用一个可以突出显示网页上文本的 JavaScript 函数吗 要求是仅突出显示一次 而不是像我们在搜索时那样突出显示所有出现的文本 你可以使用jquery突出效果 但如果您对原始 javascript 代码感兴趣 请看看我得
  • 如何在groovy中添加当前日期的年份或月份?

    如何在groovy脚本中向当前日期添加一年 def Format1 yyyy MM dd def today new Date def currentDate today format Format1 例如 2015年7月29日至2016年
  • 如何在 Firestore 中跨集合查询数据?

    下面的文档中写道 如果需要跨集合查询数据 请使用根级集合 https cloud google com firestore docs data model 如果有人知道在 Firestore 中跨根级集合查询数据的示例 请分享该示例 我不确
  • Java有可索引的多队列线程池吗?

    是否有一个 Java 类 可以通过 id 添加可执行任务 其中具有相同 id 的所有任务保证永远不会同时运行 线程数可以限制为固定数量 简单的 Map 解决方案可以轻松解决 1 但很难管理 2 同样 我所知道的所有线程池类都会从单个队列中提
  • Hadoop 上理想的减速器数量是多少?

    正如 Hadoop wiki 给出的 计算理想的减速器数量是 0 95 或 1 75 节点 mapred tasktracker tasks maximum but 什么时候选择0 95 什么时候选择1 75 决定这个乘数时考虑的因素是什么
  • 将文件从 MVC 5 下载到 Angular 2

    我有 C 后端和 ASP Net MVC 经验 现在我正在第一次尝试 Angular 2 这需要时间 但我喜欢其中的大部分 现在我陷入了简单的文件下载 我已阅读在 Stackoverflow 上找到的所有示例 但我的示例仍然无法运行 在服务
  • .bashrc 语法错误:意外的文件结尾

    我收到意外的文件结束错误 我不太确定如何解决它 Source global definitions if f etc bashrc then etc bashrc fi User specific aliases and functions
  • 如何对 List 进行排序以首先列出目录并按目录对文件进行分组?

    为了获取指定目录中包含的所有文件并根据某些扩展名 我使用以下方法listFiles班级的FileUtils from Apache 公共 IO库 如以下代码示例所示 ArrayList
  • Kendo Grid 滚动到选定的行

    我希望能够调用一个将 Kendo 网格滚动到所选行的函数 我已经尝试过一些方法 但没有一个有效 例如我尝试过这个 var grid Grid data kendoGrid content k grid content content scr