corstro
February 16, 2021, 8:40pm
1
Hello,
we have simple form with two fields and the list. We are trying to filter values in the list. First one - Project, working properly and is filtered according value in Employee field. The second - ContractualBasis - doesn't work. It should be filtered according to the value in a project field, so It has to be changed each time when project changed. Is it possible to filter values in change event?
fd.spRendered(function() {
fd.control('Timesheet').$on('edit', function(editData) {
//filter Project field by Employee
var employee = fd.field("Employee").value.DisplayText;
editData.field("Employee").value = employee;
editData.field('Project').filter = "Employee eq '" + employee + "'";
editData.field('Project').useCustomFilterOnly = true;
editData.field('Project').$on('change', function(changeData) {
var project = changeData.LookupValue;
editData.field('ContractualBasis').filter = "Employee eq '" + employee + "' and Project eq '" + project + "'";
editData.field('ContractualBasis').useCustomFilterOnly = true;
});
});
});
Thanks in advice.
Hello @corstro ,
What is the type of Project field in the source list? Is it a lookup field?
If so, please try to filter by its ID, not value:
var project = changeData.LookupId;
corstro
February 18, 2021, 1:54pm
3
Hi @mnikitina ,
Yes it is lookup field, but I have to filter it by name (LookupValue). I tried following scenario - I assigned fixed value to the project variable.
If I move filter definition outside change event, filter works:
fd.spRendered(function() {
fd.control('Timesheet').$on('edit', function(editData) {
//filter Project field by Employee
var employee = fd.field("Employee").value.DisplayText;
editData.field("Employee").value = employee;
editData.field('Project').filter = "Employee eq '" + employee + "'";
editData.field('Project').useCustomFilterOnly = true;
var project = "Overhead";
editData.field('ContractualBasis').filter = "Employee eq '" + employee + "' and Project eq '" + project + "'";
editData.field('ContractualBasis').useCustomFilterOnly = true;
editData.field('Project').$on('change', function(changeData) {
fd.field("Title").value = project + ' ' + employee;
});
});
});
If it is inside change event it doesn't work:
fd.spRendered(function() {
fd.control('Timesheet').$on('edit', function(editData) {
//filter Project field by Employee
var employee = fd.field("Employee").value.DisplayText;
editData.field("Employee").value = employee;
editData.field('Project').filter = "Employee eq '" + employee + "'";
editData.field('Project').useCustomFilterOnly = true;
editData.field('Project').$on('change', function(changeData) {
fd.field("Title").value = project + ' ' + employee;
var project = "Overhead";
editData.field('ContractualBasis').filter = "Employee eq '" + employee + "' and Project eq '" + project + "'";
editData.field('ContractualBasis').useCustomFilterOnly = true;
});
});
});
Hello @corstro ,
Try adding the refresh function to the code:
fd.spRendered(function() {
fd.control('Timesheet').$on('edit', function(editData) {
//filter Project field by Employee
var employee = fd.field("Employee").value.DisplayText;
editData.field("Employee").value = employee;
editData.field('Project').filter = "Employee eq '" + employee + "'";
editData.field('Project').useCustomFilterOnly = true;
editData.field('Project').$on('change', function(changeData) {
fd.field("Title").value = project + ' ' + employee;
var project = "Overhead";
editData.field('ContractualBasis').filter = "Employee eq '" + employee + "' and Project eq '" + project + "'";
editData.field('ContractualBasis').useCustomFilterOnly = true;
editData.field('ContractualBasis').refresh();
});
});
});
corstro
February 19, 2021, 12:12pm
5
Thank you. It works like a charm.
1 Like