filter()
filters data items in a component
filter(rule?: function | object, config?: object, silent?: boolean): string;
Parameters:
rule?: function | object- optional, the filtering criteria- If set as a function, filtering will be applied by the rule specified in the function. It takes as a parameter a data item and returns true/false
- If set as an object, the parameter has the following attributes:
by?: string | number- optional, the id of a data fieldmatch?: string- optional, a pattern to matchcompare?: function- optional, a function for extended filtering that takes the following parameters:value- the value to comparematch- a pattern to matchitem- a data item the values of which should be comparedmulti- the value of themultiattribute of the rule
multi?: boolean- optional, marks the field as holding several values at once (e.g. a multiselect column stores them as a comma-separated string). Passed tocompareas its last argument
config?: object- optional, an object with the following properties:id?: string- optional, the id of the filteradd?: boolean- optional, defines whether each next filtering will be applied to the already filtered data (true), or to the initial data (false, default)permanent?: boolean- optional, true to make the current filter permanent. It is applied even if the next filtering doesn't have theadd:trueproperty in its configuration object. It is not dropped by a plainresetFilter()call and is reapplied to the data afterparse()orload(); passpermanent:trueto resetFilter() to remove it as well
silent?: boolean- optional, if set to true, the method will be called without triggering events, false by default
info
Note that after calling the method with the silent:true parameter, you may need to repaint the component with the paint() method.
Returns:
id: string- the id of the filter
Example
// filtering data by a function
grid.data.filter(function (item) {
return item.a > 0 && item.b !== "Apple";
});
// or
grid.data.filter(function (item) {
return item.a > 0 && item.b !== "Apple";
}, {
add: true,
});
// filtering data by the column
grid.data.filter({
by: "a",
match: "Orange",
compare: function (value, match, item) {
if (item.a !== "Some") {
return val === "New";
}
return false;
}
}, {
add: true,
});
Unless config.add is set, the method replaces the currently applied filters; calling it without a rule at all drops all non-permanent filters and restores the unfiltered order. Permanent filters are the exception: they always survive and are reapplied first. The new rule then narrows their result further, so an item remains in the result only if it matches both the permanent filter and the new rule.
Related sample: Data. Filter