фильтрация на стороне сервера с сеткой пользовательского интерфейса

0

Существует фильтрация по умолчанию, предоставляемая сетью ui, которая активируется с помощью enableFiltering: false в gridOptions. Вместо использования этой фильтрации по умолчанию я использовал текст, введенный в поле фильтра для нескольких столбцов, отправлял фильтры в serevr и возвращал данные. Я попытался использовать filterOptions, но $ scope. $ Watch ('filterOptions', function (newVal, oldVal) {

        if (newVal !== oldVal) {
            $scope.getPagedDataAsync($scope.gridOptions.$gridScope.filterText);
        }
    }, true); 

никогда не вызывается. любая помощь приветствуется.

Теги:
user-interface
angular-ui-grid

1 ответ

0
Лучший ответ

Есть несколько способов сделать это. В onRegisterApi в параметрах сетки вы можете сделать это:

  onRegisterApi: function(gridApi) {

         gridApi.core.on.filterChanged($scope,
              function(rowEntity, colDef, newValue, oldValue) {
             // check which filter value changed and do something
             // to get the value from a filter in column X you can do 
                  gridApi.grid.columns[X].filters[0]
              }
         );
  }

Вы также можете установить объект фильтра в каждой ячейке. Возможно, собирайте различные столбцы, которые вы хотите фильтровать, и поместите объект фильтра в каждую из этих ячеек. Всякий раз, когда вы меняете, у вас будут все необходимые значения, и вы можете создать функцию в "условии", которая вызвана для выполнения fltering.

   filter: { type: xxx, condition: $scope.myCustomFilter }

   $scope.myCustomFilter = function(searchTerm, callValue) {

       // check your various conditions here and return true/false
   }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню