2015-07-10 16 views
8

Tôi đang sử dụng django 1.8 và angularjs 1.3.14 và jquery 1.11.0.Lưới ui góc là lọc theo chuỗi khi cộtDef có trường là số kiểu. Tại sao?

Điều này nằm trong 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' 
      } 

Lưu ý rằng 'loại' là một số. Khi tôi chạy chương trình này xử lý trường này dưới dạng Chuỗi và không phải là số. Vì vậy, sắp xếp không hoạt động theo cách tôi cần.
Tôi đã thử loại bỏ 'loại' và tự động phát hiện loại dữ liệu. -Không hoạt động.

Đây là những gì các loại trông giống như trước và sau khi sử dụng:

Before adding search items

Simply adding a 6 to the search field

Như bạn có thể thấy, các mặt hàng đã được lọc khi không có dữ liệu nhỏ hơn 6. Xin vui lòng giúp . Cảm ơn bạn.

Trả lời

4

Bạn có thể sử dụng chức năng điều kiện của riêng bạn

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

Sự cố đang được lọc. Tôi đặt 'type:' number '' và cố gắng numberStr. Không làm việc. Cột vẫn được lọc theo giá trị chuỗi chứ không phải số. –

+0

Tôi chỉnh sửa câu trả lời –

+0

Cảm ơn bạn. Đây là những gì tôi đã thực hiện và nó hoạt động. Tôi không cần phải bao gồm 'hàng' hoặc 'cột'. Và nó hoạt động có hoặc không có câu lệnh 'if'. Nếu bạn không nhớ, câu lệnh if sẽ làm gì? –

1

gì phiên bản của góc-ui-grid bạn đang sử dụng. Tôi chỉ cần thực hiện một plnkr với các dữ liệu tương tự với phân loại và lọc và nó làm việc ok. Vì vậy, nó có thể là một vấn đề phiên bản vào cuối của bạn.

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

Tôi đang mở rộng về câu trả lời @Qi Tang trong trường hợp có ai đó như tôi đã được tìm kiếm một câu trả lời mà các kết quả lọc chỉ bằng với giá trị bộ lọc (không lớn).

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); 
    } 
} 

Lưu ý cho implemenations khác cũng như:

if(!term) return true; 

sẽ trở lại đúng với bất kỳ giá trị falsy, chắc chắn đó là những gì bạn muốn. Điều đó bao gồm không chỉ null và không xác định, nhưng sai và 0, mà trong một bộ lọc số có thể không được mong muốn (tôi không thể lọc nơi các mục là 0).

Các vấn đề liên quan