1

我已经为其中一列定义了一个条件单元格模板。它正确显示数据,但我无法在单元格模板中搜索文本。这是我的 plunkr: https ://plnkr.co/edit/TDX5jtPord1hkzCVaw3L?p=preview

var template1 = '<div class="">' + 
'<div class="" ng-if="COL_FIELD > 30">Greater </div> ' +
'<div class="" ng-if="COL_FIELD < 30"> Lesser </div> ' +
'</div>';

在模板中,我设置了以下条件:如果 COL_FIELD > 30 则写 Greater.. 或者写 Lesser。现在我应该可以在 Number 列中搜索 Greater or Lesser 了。

在此处输入图像描述

4

2 回答 2

2

一个解决方案可能是在您的数据上添加一个属性,例如:

$http.get('data.json').success(function(data) {
    data.map(function(item) {
        item.greaterLesser = item.amount > 30 ? 'Greater' : 'Lesser';
    });
    $scope.gridOptions.data = data;
});

然后不要将金额与模板一起使用,只需绑定此属性即可。

$scope.gridOptions = {
    enableFiltering: true,
    columnDefs: [{
      field: 'name',
      width: 70
    }, {
      field: 'greaterLesser',
      name: 'Number',
      width: 90,
    }, {
      field: 'amount',
      name: 'Currency',
      cellFilter: 'currencyFilter:this',
    }]
};

这是更新的 plunker

编辑

如果你想使用模板,你可以自己实现搜索功能。您可以将filter选项添加到您的字段并实现该condition功能。就像是:

filter: {
    condition: function(searchTerm, cellValue) {
        var value = cellValue > 30 ? 'greater' : 'lesser';
        var result = value.search(searchTerm.toLowerCase());
        return result > -1;
    }
}

在这里我使用了该search功能,但您可以使用match或其他一些功能。这是一个演示 plunker

于 2016-04-20T08:50:03.573 回答
0

我使用下面的代码使搜索工作

field: 'EmpId', 
displayName: 'Employee Type', 
cellTemplate: '<div style="cursor:pointer"  class="ui-grid-cell-contents">{{grid.appScope.GetEmployeeType(row)}}</div>', 
filter: {
            condition: function (searchTerm, cellValue,row,column) {
            var value = $scope.GetEmployeeType(row);//same function that you use to display value in cell Template
            return (value.toLocaleLowerCase().indexOf(searchTerm.toLocaleLowerCase())>-1);
                            }
                        }
于 2019-04-27T21:37:50.477 回答