Select 用于网格中的多个复选框

Select for multiple checkbox in the grid

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

Demo in dojo

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>

您的问题在于您没有 unbind 单击 view 时的 onClick 回调。当您将函数绑定到事件侦听器时,它将继续侦听,除非您通过 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 变量,以降低 运行 成为错误的可能性。