Kendo Grid Core - 循环通过网格中的开关

Posted

技术标签:

【中文标题】Kendo Grid Core - 循环通过网格中的开关【英文标题】:Kendo Grid Core - Loop through switches in grid 【发布时间】:2021-01-30 08:45:39 【问题描述】:

我无法访问网格列中的开关。我想循环浏览它们并在单击工具栏按钮后将它们打开。

点击事件正在工作。但是在“switchInstance”上得到“未定义”:

网格列:

.Columns(columns =>
   
   columns.Bound(p => p.Exempt).Width(100).Filterable(ftb => 
   ftb.Multi(true)).Sortable(false).ClientTemplate(
        "<input class='exemptSwitch' id='exemptSwitch' \\#if (Exempt)  \\# checked='checked' \\#  \\# 
        type='checkbox' />");
   )

工具栏按钮:

.ToolBar(toolBar =>
 
      toolBar.Custom()
       .Name("EnableAllFiltered")
       .Text("Enable All Filtered")
       .IconClass("k-icon k-i-play")
       ;
 )

点击事件:

$(function () 
    $(".k-grid-ExemptAllFiltered", "#SubscriberGrid").on("click", function (e)    //click of custom grid header toolbar button

         $("#SubscriberGrid .exemptSwitch").each(function () 
               var switchInstance = $(this).data("kendoSwitch");
               switchInstance.check(true);
         );
);

任何帮助将不胜感激!

乔恩

【问题讨论】:

【参考方案1】:

看起来这个匿名函数没有在 Kendo Grid 事件中调用。

尝试这样的操作来查看您的this 在控制台中是什么:

$(function () 
    $(".k-grid-ExemptAllFiltered", "#SubscriberGrid").on("click", function (e)    //click of custom grid header toolbar button

         $("#SubscriberGrid .exemptSwitch").each(function () 
               console.log(this);
               // var switchInstance = $(this).data("kendoSwitch");
               // switchInstance.check(true);
         );
);

如果您知道自己一直想要来自 Kendo Grid 的数据,请尝试以下操作:

$(function () 
    $(".k-grid-ExemptAllFiltered", "#SubscriberGrid").on("click", function (e)    //click of custom grid header toolbar button

         $("#SubscriberGrid .exemptSwitch").each(function () 
               var grid = $('#SubscriberGrid').data('kendoGrid');
               console.log(grid);
               var switchInstance = grid.data("kendoSwitch");
               switchInstance.check(true);
         );
);

我不知道你的程序的结构,所以可能不对。

另一种选择是提供事件项e,如下所示:

$(function () 
    $(".k-grid-ExemptAllFiltered", "#SubscriberGrid").on("click", function (e)    //click of custom grid header toolbar button

         $("#SubscriberGrid .exemptSwitch").each(function (e)  // notice the 'e'
               var grid = e.sender;
               console.log(grid);
               var switchInstance = grid.data("kendoSwitch");
               switchInstance.check(true);
         );
);

我不知道这是否有帮助。我也是 Kendo Grid 的新手,我只是提供一些我看到的技巧。

如果有帮助,请告诉我。

【讨论】:

以上是关于Kendo Grid Core - 循环通过网格中的开关的主要内容,如果未能解决你的问题,请参考以下文章

带有 JSON 的 Kendo Grid .NET Core 模板

从 Kendo DatePicker Inside Kendo Grid 中选择的日期格式

如何使用 Kendo UI Grid 的 SetDataSource 方法

Kendo Grid 未在 Web API 中调用 HttpDelete 方法

如何保存 Kendo MVC Grid 的列顺序

Kendo grid getKendoGrid无法使用扩展的kendo网格