|
<div>
<button class="e-btn" id="getFilteredRecords"(click)="getFilteredRecords($event)">Get Records</button>
<ejs-querybuilder [dataSource]="data" id="querybuilder" #querybuilder width="100%" [rule] = "importRules">
</ejs-querybuilder>
<div id="content_section" class="e-content-section e-hide">
<table id="datatable" class='e-rule-table'>
<thead>
<tr>
<th>EmployeeID</th>
<th>FirstName</th>
<th>LastName</th>
<th>Title</th>
<th>Address</th>
<th>Country</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div
|
|
export class AppComponent implements OnInit {
@ViewChild('querybuilder')qryBldrObj: QueryBuilderComponent;
public importRules: RuleModel;
public data: DataManager;
public getFilteredRecords = (): void => {
let template: string = '<tr><td>${EmployeeID}</td><td>${LastName}</td><td>${FirstName}</td><td>${Title}</td><td>${Address}</td><td>${Country}</td></tr>';
let compiledFunction: any = compile(template);
let table: HTMLElement = document.getElementById('datatable') as HTMLElement;
var QueryData = this.qryBldrObj.getPredicate(this.qryBldrObj.getValidRules());
var rootFilter = []; rootFilter.push(QueryData);
var filter = { 'where': rootFilter};
let url: any = new URL('https://localhost:44376/employee');
(url as any).search = new URLSearchParams({search:JSON.stringify(filter)});
fetch(url).then(response =>
response.json()
).then(data => {
if (data.length) {
document.getElementById('content_section').classList.remove('e-hide');
} else {
document.getElementById('content_section').classList.add('e-hide');
}
table.querySelector('tbody').innerHTML = '';
data.forEach((item) => {
table.querySelector('tbody').appendChild(compiledFunction(item)[0].querySelector('tr'));
});
});
};
ngOnInit(): void {
this.data = new DataManager({
url: 'https://localhost:44376/employee',
adaptor: new WebApiAdaptor(),
crossDomain: true
});
this.importRules = {
'condition': 'and',
'rules': [{
'label': 'Employee ID',
'field': 'EmployeeID',
'type': 'number',
'operator': 'equal',
'value': 1
}]
};
}
}
|
|
[HttpGet]
public IEnumerable<Employee> Get(string search)
{
IEnumerable<Employee> employees = _context.Employees.ToList();
IEnumerable<NameList> nameList;
if (search != null)
{
var FilterQuery = JsonConvert.DeserializeObject<WhereData>(search);
if (FilterQuery.Where != null && FilterQuery.Where.Count > 0)
{
Type type = _context.Employees.GetElementType();
if (type == null)
{
Type type1 = _context.Employees.GetType();
type = type1.GetElementType();
}
var paramExpression = type.Parameter();
QueryableOperation operation = new QueryableOperation();
var predicates = operation.PredicateBuilder(_context.Employees, FilterQuery.Where, FilterQuery.Where[0].Condition, paramExpression, type);
IEnumerable<Employee> whereData = (IEnumerable<Employee>)_context.Employees.AsQueryable().Where(paramExpression, predicates);
employees = whereData.Select(emp => new Employee
{
EmployeeID = emp.EmployeeID,
LastName = emp.LastName,
FirstName = emp.FirstName,
Title = emp.Title,
Address = emp.Address,
Country = emp.Country
});
}
}
return employees;
}
} |