фильтровать значение сетки пользовательского интерфейса на основе установленного флажка строки - PullRequest
0 голосов
/ 17 сентября 2018

Это код сетки пользовательского интерфейса (минимальный)

// js файл

vm.gridOptions1 = {
      enableColumnResizing: true,
      enableAutoResizing: false,

 columnDefs: [


        {
          field: 'createdDate',
          displayName: 'Created Date',
          type: 'date',
          cellFilter: 'date:"dd-MM-yyyy"',
          enableHiding: false, headerTooltip: 'Created Date'
        },{
          name: 'Refer',
          displayName: 'Refer', enableSorting: false, headerTooltip: 'Refer',
          cellTemplate: '<input type="checkbox" ng-model="row.entity.isReferred" />'
        }

]});

При нажатии этого байта мне нужно отфильтровать, получить только те строки, у которых установлен флажок (isReferred = true) // html file

<button type="button"  class="btn btn-primary-joli " ng-click="srchctrl.send">Send</button>

Это файл, который пытается получить отфильтрованный список на основе значения переопределенного флажка, но он не работает.// JS-файл

 vm.send = function () {
      if (vm.gridApi.selection.data != null && vm.gridApi.selection.data != undefined) {
         vm.referredList = filterFilter(vm.gridApi.selection.data, {
          isReferred: true
        });
        console.log("referredList :"+JSON.stringify(referredList));
      }
    };

Как я могу получить все отмеченные значения.Я не хочу вызывать метод для каждого события щелчка на флажке.

1 Ответ

0 голосов
/ 21 сентября 2018

Я думаю, что самый простой способ добиться этого - использовать функцию gridApi.grid.registerRowsProcessor.Я настроил Plunker, чтобы показать, что я имею в виду:

http://plnkr.co/edit/lyXcb90yQ0ErUJnSH7yF

Apps.js:

var app = angular.module('plunker', ['ui.grid']);

app.controller('MainCtrl', ['$scope', 'uiGridConstants', function($scope, uiGridConstants) {

  $scope.gridOptions = {
    columnDefs: [
        {field: 'col1', displayName: 'Column 1', width: 175},
      {field: 'col2', displayName: 'isReferred', width: '*'}
    ],
    data: [
      { col1: "Hello 1",col2: true},
      { col1: "Hello 2", col2: false},
      { col1: "Hello 3", col2: true},
      { col1: "Hello 4", col2: false},
      { col1: "Hello 5", col2: true}
    ],
    enableFiltering: true,
    onRegisterApi: function(gridApi) {
      $scope.gridApi = gridApi;
    }
    };

  $scope.Filter = Filter;
  $scope.ShowAll = ShowAll;

  function ShowAll() {
    $scope.gridApi.grid.removeRowsProcessor(myFilter);
    $scope.gridApi.core.queueGridRefresh();
  }

  function Filter() {
    $scope.gridApi.grid.registerRowsProcessor(myFilter, 150);
    $scope.gridApi.core.queueGridRefresh();
  }

  function myFilter(renderableRows) {
    renderableRows.forEach( function(row) {
      row.visible = row.entity.col2;
    });
    return renderableRows;
  }
}]);

Нажатие кнопки Filter зарегистрируйте myFilter RowsProcessor, который будет перебирать все строки, чтобы изменить видимый атрибут.Нажатие кнопки ShowAll удалит RowsProcessor, таким образом, снова показывая все ранее скрытые строки.

Всякий раз, когда изменяется значение isReferred , фильтр вызывает автоматическое обновление сетки.это изменение.

...