Having trouble getting help?
Contact Support
Contact Support
Filtering in React Query builder component
30 Jan 202311 minutes to read
Query Builder allows you to create or delete conditions and groups. You can use showButtons
to enable/disable these buttons.
You can create or delete conditions by interacting through the user interface and methods.
- Use the
addRules
, anddeleteRules
methods to create/delete conditions. - Use
addGroups
, anddeleteGroups
methods to create/delete groups.
import { ButtonComponent } from '@syncfusion/ej2-react-buttons';
import { QueryBuilderComponent } from '@syncfusion/ej2-react-querybuilder';
import * as React from 'react';
import * as ReactDom from 'react-dom';
// @ts-ignore
import { employeeData } from './datasource';
function App() {
let qryBldrObj;
let ButtonOptions = {
groupDelete: true,
groupInsert: true,
ruleDelete: true
};
let columnData = [
{ field: 'EmployeeID', label: 'EmployeeID', type: 'number' },
{ field: 'FirstName', label: 'First Name', type: 'string' },
{ field: 'TitleOfCourtesy', label: 'Title Of Courtesy', type: 'boolean', values: ['Mr.', 'Mrs.'] },
{ field: 'Title', label: 'Title', type: 'string' },
{ field: 'HireDate', label: 'HireDate', type: 'date', format: 'dd/MM/yyyy' },
{ field: 'Country', label: 'Country', type: 'string' },
{ field: 'City', label: 'City', type: 'string' }
];
let importRules = {
'condition': 'and',
'rules': [{
'field': 'EmployeeID',
'label': 'EmployeeID',
'operator': 'equal',
'type': 'number',
'value': 1001
},
{
'field': 'Title',
'label': 'Title',
'operator': 'equal',
'type': 'string',
'value': 'Sales Manager'
}]
};
function addGroup() {
qryBldrObj.addGroups([{ 'condition': 'and', 'rules': [{ 'label': 'First Name', 'field': 'FirstName', 'type': 'string', 'operator': 'startswith', 'value': 'v' }] }], 'group0');
}
function addRule() {
qryBldrObj.addRules([{ 'label': 'City', 'field': 'City', 'type': 'string', 'operator': 'equal', 'value': 'US' }], 'group0');
}
function deleteGroup() {
qryBldrObj.deleteGroups(['group1']);
}
return (<div>
<QueryBuilderComponent width='100%' dataSource={employeeData} columns={columnData} rule={importRules} ref={(scope) => { qryBldrObj = scope; }} showButtons={ButtonOptions}/>
<div className="e-qb-button">
<ButtonComponent id="addgroup" cssClass='e-primary' content='Add Group' onClick={addGroup}/>
<ButtonComponent id="addrules" cssClass='e-primary' content='Add Rule' onClick={addRule}/>
<ButtonComponent id="deletegroups" cssClass='e-primary' content='Delete Group' onClick={deleteGroup}/>
</div>
</div>);
}
export default App;
ReactDom.render(<App />, document.getElementById('querybuilder'));
import { ButtonComponent } from '@syncfusion/ej2-react-buttons';
import { ColumnsModel, QueryBuilderComponent, RuleModel, ShowButtonsModel } from '@syncfusion/ej2-react-querybuilder';
import * as React from 'react';
import * as ReactDom from 'react-dom';
// @ts-ignore
import { employeeData } from './datasource';
function App() {
let qryBldrObj: QueryBuilderComponent;
let ButtonOptions: ShowButtonsModel = {
groupDelete: true,
groupInsert: true,
ruleDelete: true
};
let columnData: ColumnsModel[] = [
{ field: 'EmployeeID', label: 'EmployeeID', type: 'number' },
{ field: 'FirstName', label: 'First Name', type: 'string' },
{ field: 'TitleOfCourtesy', label: 'Title Of Courtesy', type: 'boolean', values: ['Mr.', 'Mrs.'] },
{ field: 'Title', label: 'Title', type: 'string' },
{ field: 'HireDate', label: 'HireDate', type: 'date', format: 'dd/MM/yyyy' },
{ field: 'Country', label: 'Country', type: 'string' },
{ field: 'City', label: 'City', type: 'string' }
];
let importRules: RuleModel = {
'condition': 'and',
'rules': [{
'field': 'EmployeeID',
'label': 'EmployeeID',
'operator': 'equal',
'type': 'number',
'value': 1001
},
{
'field': 'Title',
'label': 'Title',
'operator': 'equal',
'type': 'string',
'value': 'Sales Manager'
}]
};
function addGroup(): void {
qryBldrObj.addGroups([{'condition': 'and','rules': [{'label': 'First Name','field': 'FirstName','type': 'string','operator': 'startswith','value': 'v' }]}], 'group0');
}
function addRule(): void {
qryBldrObj.addRules([{'label': 'City','field': 'City','type': 'string','operator': 'equal','value': 'US'}], 'group0');
}
function deleteGroup(): void {
qryBldrObj.deleteGroups(['group1']);
}
return (
<div>
<QueryBuilderComponent width='100%' dataSource={employeeData} columns={columnData}
rule={importRules} ref={(scope) => { qryBldrObj = scope as QueryBuilderComponent; }} showButtons={ButtonOptions}/>
<div className="e-qb-button">
<ButtonComponent id="addgroup" cssClass='e-primary' content='Add Group' onClick = {addGroup}/>
<ButtonComponent id="addrules" cssClass='e-primary' content='Add Rule' onClick = {addRule}/>
<ButtonComponent id="deletegroups" cssClass='e-primary' content='Delete Group' onClick = {deleteGroup}/>
</div>
</div>
);
}
export default App;
ReactDom.render(<App />,document.getElementById('querybuilder'));