2015-07-10 45 views
8

我使用的是django 1.8,而angularjs 1.3.14和jquery 1.11.0。當columnDefs將字段作爲類型編號時,角度UI網格按字符串篩選。爲什麼?

這是在Controller/gridOptions/columnDefs中。

{ field: 'credit_amt',     
    displayName: 'Credit Amount',   
    type: 'number', 
    width: '8%', 
    enableFocusedCellEdit: true, 
    visible:true, 
    //This 'filters' is the sort box to do the search. 
    filters: [{ 
      condition: uiGridConstants.filter.GREATER_THAN, 
      placeholder: 'greater than' 
      } 

請注意'type'是一個數字。當我運行該程序時,該程序將該字段視爲字符串而不是數字。所以這種排序不能按我需要的方式工作。
我試過忽略'type'並讓它自動檢測數據類型。 - 沒有工作。

這裏的排序是什麼樣子,使用前後:

Before adding search items

Simply adding a 6 to the search field

正如你所看到的,當沒有數據是小於6 請幫助項目進行過濾。謝謝。

回答

4

可以是您使用使用自己的病情功能

condition: function(term, value, row, column){ 
    if(!term) return true; 
    return parseFloat(value) > parseFloat(term); 
} 
+0

問題在於過濾。我設置了'type:'number''並嘗試了numberStr。既沒有工作。該列仍然按字符串值進行過濾,而不是數字。 –

+0

我編輯我的答案 –

+0

謝謝。這是我實施和它的工作。我不需要包含'row'或'column'。它可以使用或不使用'if'語句。如果你不介意,if語句做了什麼? –

1

什麼角度的UI網的版本。我只是用類似的數據進行分類和過濾,並且工作正常。所以這可能是你的最終版本問題。

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

app.controller('MainCtrl', ['$scope', '$http', 'uiGridConstants', function ($scope, $http, uiGridConstants) { 
    $scope.gridOptions1 = { 
    enableSorting: true, 
    enableFiltering:true, 
    columnDefs: [ 
     { field: 'credit_amount',     
    displayName: 'Credit Amount',   
    type: 'number', 
    enableFocusedCellEdit: true, 
    visible:true, 
    //This 'filters' is the sort box to do the search. 
    filters: [{ 
      condition: uiGridConstants.filter.GREATER_THAN, 
      placeholder: 'greater than' 
      } 
    ] 

     }] 
    }; 

$scope.gridOptions1.data = [{ 
    credit_amount:1000.02 
},{ 
    credit_amount:1001.0 
},{ 
    credit_amount:100.0 
},{ 
    credit_amount:500.0 
}] 
}]); 

http://plnkr.co/edit/ZQK1obRbctCUhUDrdoY2?p=preview

0

我的情況下,擴大對@Qi唐的回答有一個人喜歡我,一直在尋找的答案在過濾結果只等於過濾器值(不大於)。

其他implemenations
condition: function (term, value, row, column) { 
    if ('undefined' === typeof (term) || null === term) 
     return true; 
    try { 
     return parseFloat(value) === parseFloat(term); 
    } catch (ex) { 
     console.warn(ex); 
    } 
} 

注,以及:

if(!term) return true; 

將返回true爲任何 falsy值,確保是你想要的。這不僅包括null和undefined,而且包含false和0,,它們在數字過濾器中可能不合需要(我無法過濾項目爲0的位置)。

相關問題