在事件处理程序中获取Kendo网格名称

时间:2014-08-15 10:14:40

标签: kendo-ui kendo-grid kendo-asp.net-mvc

如何将gridName传递给Kendo事件处理程序。 .Events(events => events.RequestEnd("requestEndEvent")

我使用的是Kendo UI版本2014.2.716。

3 个答案:

答案 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);  
 }