2017-03-25 5 views
1

ui-grid 데이터를 필터링해야하지만 버튼 클릭시 그리드가 제공하는 네이티브 헤더 필터는 필터링 할 필요가 없습니다.ui-grid 하단의 카운트 표시를 재설정하는 방법

따라서 내 Filter 버튼의 수신기에서 원래 데이터 배열을 필터링하고 필터링 된 항목을 $scope.gridData 개체에 다시 할당합니다. 나도 reset 버튼이 있습니다. 재설정을 클릭하면 원본 데이터 배열을 $scope.gridData 개체에 다시 할당합니다.

필터링을 사용하면 문제가 없습니다. 그러나 문제가 발생할 때 : 데이터는 외부 Filter 버튼을 사용하여 필터링됩니다. 내부 (그리드 필터) 필터가 한 열에 적용됩니다. Reset 버튼을 사용하여 데이터가 재설정됩니다.

이 재설정에서 표는 내부 필터로 필터링 된 항목을 유지 관리합니다. 그러나 행 수 표시에서 격자는 n-10 out of total items을 표시합니다. 여기서 총 항목은 원래 데이터 배열의 수이며 그리드는 현재 필터링 된 데이터를 보유합니다.

그리드 카운트 디스플레이를 수동으로 변경할 수있는 방법이 있습니다. 내가 제대로 이해하면

+0

아래에서 나의 업데이트가 도움이 되었습니까? 다른 것이 필요합니까? –

답변

1

, 당신은 UI를 그리드 바닥 글을 무시하고 조정 만들 수 :

var app = angular.module('app', ['ui.grid']); 
 
app.controller('MainCtrl', ['$scope', function($scope) { 
 
    var adjustedGridFooterTemplate = 
 
    //same as normal template, but with: + ' (+/- my adjustment)' AND + ' (+/- another adjustment)' 
 
    "<div class=\"ui-grid-footer-info ui-grid-grid-footer\"><span>{{'search.totalItems' | t}} {{grid.rows.length + ' (+/- my adjustment)'}}</span> <span ng-if=\"grid.renderContainers.body.visibleRowCache.length !== grid.rows.length\" class=\"ngLabel\">({{\"search.showingItems\" | t}} {{grid.renderContainers.body.visibleRowCache.length + ' (+/- another adjustment)'}})</span></div>"; 
 
    $scope.gridOptions = { 
 
    enableFiltering: true, 
 
    showGridFooter: true, 
 
    gridFooterTemplate: adjustedGridFooterTemplate, 
 
    data: [{name: "Moroni", age: 50}, 
 
      {name: "Tiancum", age: 43}, 
 
      {name: "Jacob", age: 27}] 
 
    } 
 
}]);
div[ui-grid] { 
 
    height: 200px; 
 
}
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.min.js"></script> 
 
<script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-grid/4.0.2/ui-grid.min.js"></script> 
 
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/angular-ui-grid/4.0.2/ui-grid.min.css" /> 
 
<div ng-app="app" ng-controller="MainCtrl"> 
 
    <div ui-grid="gridOptions" class="gridStyle"> 
 
    </div> 
 
</div>

업데이트 (아래 주석에서)

은 당신이 말하는 $scope.gridData을 다시 할당하고 angular.copy()을 사용하여 다시 할당해야합니다 (예 :). 210은 내부 그리드 시계가 재발사되도록 보장합니다.

호프가 도움이 되었으면 다른 질문이 있으면 알려주세요.

+0

그 템플릿 작성에 대한 귀하의 노력에 감사드립니다 :). 분명히이 문제를 해결할 수있는 방법 일 수 있습니다. 그러나 사용자 정의 템플릿없이이 작업을 수행 할 수 있는지 제안 할 수 있습니다. 격자 자체에 의해 노출되는 객체가 조작 될 수 있습니까? –

+0

코드를 더 이상 보지 않아도 확실히 알기는 어렵지만 위의 업데이트를 제공했습니다. 다른 질문이 있으면 알려줘. 항상 도와 드리겠습니다! –

+0

초기 접근 방식을 사용했습니다. –