如何在DataSource的onRequestStart事件中获取kendoGrid的ID?
解决Kendo Grid onRequestStart事件中获取Grid ID的问题
我来帮你搞定这个问题!针对你使用的Kendo UI 2016.1.226版本,完全可以在onRequestStart事件处理器里直接获取Grid的ID,不需要额外传参数,下面给你两种可靠的实现方式:
方法一:通过DataSource关联的Grid实例获取ID
onRequestStart事件的参数e里,e.sender就是当前触发事件的DataSource实例,而它的options.grid属性会指向绑定的Grid对象。我们可以通过这个Grid对象拿到对应的DOM元素ID:
function onRequestStart(e) { // 获取关联的Grid实例 var targetGrid = e.sender.options.grid; if (targetGrid) { // 提取Grid的ID var gridId = targetGrid.element.attr("id"); console.log("当前Grid的ID是:" + gridId); // 这里可以用gridId做后续操作 } }
这个方法是最直接的,因为Kendo在这个版本里已经维护了DataSource和Grid的关联关系,只要你的Grid和DataSource是正确绑定的(比如通过Razor助手初始化时的默认配置),就一定能拿到。
方法二:通过DOM遍历获取Grid容器ID
如果第一种方法因为特殊场景不生效,还可以通过DOM结构遍历找到Grid的容器元素,进而获取ID:
function onRequestStart(e) { // 从DataSource绑定的元素向上查找Grid容器 var gridContainer = $(e.sender.element).closest(".k-grid"); if (gridContainer.length > 0) { var gridId = gridContainer.attr("id"); console.log("当前Grid的ID是:" + gridId); } }
额外注意事项
- 确保你的
onRequestStart函数处于全局作用域,或者在Grid初始化时能访问到的作用域内,避免因作用域问题导致无法正确获取对象。 - 检查Razor中的Grid初始化代码,确保DataSource的
RequestStart事件正确绑定到你的函数,比如:
@(Html.Kendo().Grid<YourModelType>() .Name("YourTargetGridId") // 这里的Name就是Grid的ID .DataSource(dataSource => dataSource .Ajax() .Events(ev => ev.RequestStart("onRequestStart")) // 其他DataSource配置 ) // 其他Grid配置 )
内容的提问来源于stack exchange,提问作者Dzanan Begovic
相关产品推荐
相关产品推荐

