2015-01-08 1 views
1

Я новичок в angularJS ad Мне было предложено скрыть строку в моей таблице ng-grid, если значение столбца равно «0».angularJS Не отображать строку в зависимости от значения в сетке NG

Мои grid 4 колонки:

  • пользователя
  • сегодня
  • На этой неделе
  • В этом месяце

И я хочу, чтобы скрыть всю строку, если 'в этом месяце' колонка «0»

Мой HTML для gird является:

<div data-ng-controller="workflowworkitemscompleted as vm"> 
    <div data-ng-if="isbusy"> 
     <div data-cc-spinner="vm.spinnerOptions"></div> 
    </div> 
    <div class="row"> 
     <div class="col-md-12"> 
      <div class="gridStyle" style="height:157px" data-ng-grid="gridOptions" id="cwigrid"></div> 
     </div> 
    </div> 
</div> 

Мой код контроллера:

$scope.searchfilter = ""; 
    $scope.mySelections = []; 
    $scope.sortInfo = { fields: ['countDay'], directions: ['desc'] }; 
    $scope.totalServerItems = 0; 
    $scope.pagingOptions = { 
     pageSizes: [5], 
     pageSize: 5, 
     currentPage: 1 
    }; 

    $scope.gridOptions = { 
     data: 'wfiprocessed', 
     multiSelect: false, 
     rowHeight: 25, 
     showFooter: false, 
     footerRowHeight: 40, 
     enableColumnReordering: false, 
     showColumnMenu: false, 
     enableColumnResize: false, 
     enableRowSelection: false, 
     filterOptions: $scope.filterOptions, 
     selectedItems: $scope.mySelections, 
     enablePaging: false, 
     pagingOptions: $scope.pagingOptions, 
     plugins: [gridLayoutPlugin], 
     totalServerItems: 'totalServerItems', 
     sortInfo: $scope.sortInfo, 
     useExternalSorting: false, 
     virtualizationThreshold: 50, 
     rowTemplate: "<div ng-style=\"{ 'cursor': row.cursor }\" ng-repeat=\"col in renderedColumns\" class=\"ngCell {{col.colIndex()}} {{col.cellClass}}\">" + 
      " <div class=\"ngVerticalBar\" ng-style=\"{height: rowHeight}\" ng-class=\"{ ngVerticalBarVisible: !$last }\">&nbsp;</div>" + 
      " <div ng-cell></div>" + 
      "</div>", 
     columnDefs: [ 
      { field: 'userName', displayName: 'User', cellTemplate: vm.optimizedcell }, 
      { field: 'countDay', displayName: 'Today', cellTemplate: vm.optimizedcell }, 
      { field: 'countWeek', displayName: 'This Week', cellTemplate: vm.optimizedcell }, 
      { field: 'countMonth', displayName: 'This Month', cellTemplate: vm.optimizedcell } 
     ] 
    }; 

И моя таблица выглядит следующим образом: enter image description here

Глядя на таблице выше, я не хочу, 'dtealdev' или 'qauser2', которые будут отображаться в столбце 'Этот месяц' равен '0'

+1

Так что предварительно обработайте данные, которые вы получаете из источника данных, и удалите столбцы, возвращающие '0'. затем переустановите источник данных с фильтрованным объектом в источнике данных. – Shouvik

ответ

1

В вашем источнике данных $scope.gridOptions вы загружаете весь набор данных, который хотите показать в сетке. То, что вы делаете, заключается в том, что вы пропускаете нежелательное поле, то есть qauser2 и dtealedev в этом наборе данных.

Что вы можете сделать, это вернуть только нужный набор значений данных, которые необходимо показать.

$scope.gridOptions.data = function(data) { 
    //remove the items in data that contain 0 in all fields 

    return newData; 
}