Выберите для нескольких флажок в сетке - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть этот пример данных здесь в додзё . Когда сетка загружается, появляются 2 кнопки View и edit. Когда я нажал на 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>

1 Ответ

0 голосов
/ 17 апреля 2020

Ваша проблема заключается в том, что вы не 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 переменные соответственно, чтобы уменьшить вероятность появления ошибок.

...