AG-GRID: бесконечное l oop между onRowSelected и setSelected - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь выбрать несколько строк в зависимости от того, выберу я или отменил выбор строки, если я выберу строку, строки с индексом ниже, чем индекс выбранной строки, тоже будут скрыты. Проблема, которая у меня есть, заключается в том, что каждый раз, когда выполняется setSelected (true) или setSelected (false), событие onRowSelected снова запускается, и оно становится бесконечным l oop.

this.gridOptions.onRowSelected = function(event) {
    var rowIndexSelected = event.rowIndex;
    if (event.node.selected) {
        vm.gridOptionsSuiviPrestataire.api.forEachNode(function(rowNode, index) {
            if (index < rowIndexSelected) {
                rowNode.setSelected(true);
            }
        });             
    } else {
        vm.gridOptionsSuiviPrestataire.api.forEachNode(function(rowNode, index) {
            if (index > rowIndexSelected) {
                rowNode.setSelected(true);
            }
        }); 
    }
};

Есть ли способ сделать это, не вызывая прослушиватель события onRowSelected или использовать какой-либо флаг для предотвращения выполнения кода внутри метода?

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Надеюсь, это поможет вам.

let rowSelected = false;

this.gridOptions.onRowSelected = function (event) {

  if (rowSelected) {
    return;
  }

  var rowIndexSelected = event.rowIndex;
  if (event.node.selected) {
    vm.gridOptions.api.forEachNode(function (rowNode, index) {
      if (index < rowIndexSelected) {
        rowSelected = true;
        rowNode.setSelected(true);

      }
    });
  } else {
    vm.gridOptions.api.forEachNode(function (rowNode, index) {
      if (index > rowIndexSelected) {
        rowSelected = true;
        rowNode.setSelected(true);
      }
    });
  }

  rowSelected = false;
};
0 голосов
/ 24 марта 2020

node.setSelected имеет третий параметр, называемый suppressFinishActions, но в настоящее время он только подавляет событие onSelectionChanged. Это ограничение, для которого ag-Grid имеет два элемента в резерве (AG-2859 и AG-2707). Я не уверен, когда они предоставят исправление.

На данный момент вы можете попробовать сделать node.selected = true, но я заметил, что строки, выбранные таким образом, не имеют подсветки, которая добавляется с помощью ручного выбора или setSelected.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...