ag-grid 列搜索不适用于对象作为单元格值

und*_*ned 6 angularjs ag-grid

我正在使用 cell_renderer 来定义我的单元格,如下所示:

        var cell_renderer = function(params) {
            var element = "";
            var values = params.value;
                angular.forEach(values, function(each_param){
                    element += '<a href="#/workunit/' + each_param.id + '" target="_blank">' + each_param.id +
                            '<span class="text-danger text-bold">'+
                            '<span class="" title="' + inactive_message +
                            '">' + inactive_flag + ' </span>' +
                            '<span class="" title="' + misconfigured_message +
                            '"> ' +misconfigured_flag + '</span>'+
                            '</span></a><br>';
                })
            return element;
        };
Run Code Online (Sandbox Code Playgroud)

我的列定义是这样的:

                var testObject = {};
                testObject.headerName = "my header";
                testObject.field = each_branch;
                testObject.width = 200;
                testObject.cellClassRules = cell_class_rules;
                testObject.cellRenderer = cell_renderer;
                columnDefs.push(testObject);
Run Code Online (Sandbox Code Playgroud)

这里 testObject.field = each_branch ,是一个 json 对象。

因此,内置搜索功能在 ag-grid 中不起作用。任何人都可以在这里帮助我。

Cip*_*rau 8

默认情况下,Ag-grid 中的 textFormatter 返回字符串表示形式,如果您包含 textFormatter 并在 textCustomComparator 中返回相同的对象,您将获得 valueGetter 中的对象:

   filter: "agTextColumnFilter",
filterParams: {
    textCustomComparator: function  (filter, value, filterText) {
        //value is the object from valueGetter
    },
    textFormatter: function(r) { 
        //this is the solution
        return r; 
    }, 
    valueGetter: function getter(params) {
        return {
            ...
        };
    }
}
Run Code Online (Sandbox Code Playgroud)


rol*_*oli 7

The solution is to provide valueGetter in filter params.

Say for example you have { name: 'Some Name', id: 1 }. In that case you want to filter by the name. So:

{
  filter: 'agTextColumnFilter',
  filterParams: {
    valueGetter: params => {
      return params.data.name
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


Ale*_*den 0

尝试在您的列上设置文本过滤器属性:

testObject.filter:'text',
testObject.filterParams:{
...
}
Run Code Online (Sandbox Code Playgroud)

然后在filterParams对象中实现textCustomComparator函数:

https://www.ag-grid.com/javascript-grid-filter-text/#gsc.tab=0