Поиск текста из шаблона ячейки не работает в ui-grid


person undefined    schedule 20.04.2016    source источник
comment
Где COL_FIELD определен в plnkr?   -  person tsuz    schedule 20.04.2016
comment
COL_FIELD поставляется с сеткой пользовательского интерфейса. На самом деле это значение этого столбца перед рендерингом шаблона ячейки.   -  person undefined    schedule 20.04.2016
comment
Я добавил этот шаблон в plunkr, и он отлично отображается, поэтому я не понимаю, в чем ваша проблема. Где строка поиска? Что вы ожидаете увидеть и что вы наблюдаете?   -  person tsuz    schedule 20.04.2016
comment
Он отображается нормально ... но поиск не работает в столбце с пользовательским шаблоном. Например, если я ищу больше в числовом столбце, он не отображает никакого результата.   -  person undefined    schedule 20.04.2016
comment
Вам нужно будет обновить ваш plunkr. В этом нет поля поиска.   -  person tsuz    schedule 20.04.2016
comment
Ох..моя беда..Он все равно не был сохранен.. Я сохранил его сейчас.. не могли бы вы проверить сейчас. plnkr.co/edit/TDX5jtPord1hkzCVaw3L?p=preview   -  person undefined    schedule 20.04.2016
comment
Вам понадобится собственный фильтр, чтобы переопределить совпадение выбора. Вы читали документы? Это может помочь stackoverflow.com/a/29378217/1615594   -  person tsuz    schedule 20.04.2016


Ответы (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',
    }]
};

Вот обновленный плункер

Изменить

Если вы хотите использовать шаблон, вы можете реализовать функцию поиска самостоятельно. Вы можете добавить в свое поле опцию filter и реализовать функцию condition. Что-то вроде:

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

Здесь я использовал функцию search, но вы можете использовать match или какую-то другую функцию. Вот демонстрационный плункер

person Lulylulu    schedule 20.04.2016
comment
Это служит моей цели сейчас ... но есть несколько случаев, когда мне нужно определить шаблон ... из-за определенного стиля и других вещей ... Поэтому я хотел выполнить поиск по этому шаблону. Во всяком случае, это работает для меня сейчас. Отмечу это ответом, если я больше не получу ответа. - person undefined; 20.04.2016
comment
Это то, что я искал. Большое спасибо. - person undefined; 21.04.2016

Я использовал приведенный ниже код, чтобы поиск работал

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);
                            }
                        }
person Vignesh Subramanian    schedule 27.04.2019