如何将gridName传递给Kendo事件处理程序。 .Events(events => events.RequestEnd("requestEndEvent")
。
我使用的是Kendo UI版本2014.2.716。
答案 0 :(得分:5)
最近我更新了Kendo UI并且e.sender.options.table.context.id
停止了工作。我联系了剑道,这是他们的回应。可以使用以下方法将gridname传递给任何事件处理程序,包括错误处理程序。
"您依赖的是未记录且不受支持的内容。将Grid id传递给DataSource事件处理程序的正确方法如下:"
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Read(read => read.Action("Orders_Read", "Grid"))
.Events(e => e.RequestStart("requestStartHandler(\"grid\")"))
)
<script>
function requestStartHandler(gridName) {
return function (e) {
var grid = $("#" + gridName).data("kendoGrid");
alert("Request Start for grid: " + gridName + ", items length: " + grid.items().length);
}
}
</script>
答案 1 :(得分:0)
我知道这很旧,但是对于现在发现它的任何人,都可以通过e.sender.element [0] .id
访问发送方网格的ID。在以前的版本中e.sender.element.context.id也可以使用,但是在最新版本(2018+)中,.context现在未定义。元素仍然存在,因此.element [0] .id应该继续工作。
function requestEndEvent(e) {
alert(e.sender.element[0].id);
}
答案 2 :(得分:0)
尝试此代码
function GridRequestEnd(e) {
var gridName = null;
$(".k-grid").each(function () {
var currentGrid = $(this).data("kendoGrid");
if (currentGrid != null && currentGrid.dataSource == e.sender) {
gridName = currentGrid.element.context.id;
}
});
alert(gridName);
}