首页 > 解决方案 > 选择网格中的多个复选框

问题描述

我在dojo中有这个示例数据。当网格加载时,有 2 个按钮Viewedit。当我单击view网格中的复选框时,只能选择一个节点(工作)。但是edit当我点击按钮时,我可以选择多个复选框。似乎该功能onClick仍在运行,如何阻止它?

道场演示

function onClick(e) {
  var grid = $("#grid").data("kendoGrid");
  var row = $(e.target).closest("tr");

  if(row.hasClass("k-state-selected")){
    setTimeout(function(e) {
      var grid = $("#grid").data("kendoGrid");
      grid.clearSelection();
    })
  } else {
    grid.clearSelection();
  };
};

$(document).ready(function() {
  $("#grid").kendoGrid({
      //.........grid load code
  });

});


$("#view").kendoButton();
var button = $("#view").data("kendoButton");
button.bind("click", function(e) {
  $('#grid').data('kendoGrid').dataSource.read();
  var grid = $("#grid").data("kendoGrid");
  grid.tbody.on("click", ".k-checkbox", onClick);
});

$("#edit").kendoButton();
var button = $("#edit").data("kendoButton");
button.bind("click", function(e) {
  $('#grid').data('kendoGrid').dataSource.read();
});
    <div id="grid"></div>
    <button id="view" class="k-button k-primary" value="view">View</button>
    <button id="edit" class="k-button k-primary" value="edit">Edit</button>

标签: javascriptjquerykendo-uikendo-grid

解决方案


您的问题在于单击时您unbind没有onClick回调view。当您将函数绑定到事件侦听器时,它将继续侦听,除非您通过unbind-ing 删除该侦听器。

尝试这个:

$("#edit").kendoButton();
var button = $("#edit").data("kendoButton");

button.bind("click", function(e) {

    // Unbind view event listener
    var grid = $("#grid").data("kendoGrid");
    grid.tbody.unbind("click",  onClick);

    $('#grid').data('kendoGrid').dataSource.read();
});

旁注,您应该button分别重命名变量以减少遇到错误的可能性。


推荐阅读