Dynamics 365 filter sub grid lookup on add - D365 On-premise lookup filter on subgrid using Java script
///////////////////////////
// START
// JScript source code
function setSubgridLookupFiltering() {
var subgridAddButtonId = "Requirements_addImageButton";
//Try to get the element from both the current and the parent document.
var subgridAddButton = document.getElementById(subgridAddButtonId) || window.parent.document.getElementById(subgridAddButtonId);
//This script may run before the subgrid has been fully loaded on the form. If this is the case,
//delay and retry until the subgrid has been loaded.
if (subgridAddButton == null) {
setTimeout(setSubgridLookupFiltering, 2000);
return;
}
//Local function to retrieve the lookup control and apply the filter. We will queue this function in the click event handler of the
//Add button's click event.
var getSubgridLookupAndAddFilter = function () {
debugger;
var subgridLookup = Xrm.Page.getControl("lookup_Requirements");
//Delay and retry until we can locate the lookup.
if (subgridLookup == null) {
setTimeout(getSubgridLookupAndAddFilter, 200);
return;
}
//This is a custom property we are tagging on to the lookup control to ensure that we will
//apply the custom filter only once when the Add button is first clicked.
if (subgridLookup.customFilterAdded) {
return;
}
subgridLookup.addPreSearch(function () {
debugger;
//Standard logic to build up the filter query string
var filterQuery = "";
// var Property = Xrm.Page.getAttribute("").getValue();
var lookupfield = new Array;
lookupfield = Xrm.Page.getAttribute("msdyn_account").getValue();//lookup name which lookup values need to be filters where sub grid is placed
if (lookupfield != null) {
var lookupid = lookupfield[0].id;
}
filterQuery = "<filter type='and'><condition attribute='has_property' operator='eq' value='" + lookupid + "'/></filter>";
//Standard call to add filter to the lookup control
subgridLookup.addCustomFilter(filterQuery, "has_pointmapping");//subgrid entity schema name
});
//Mark the fact that we have already added the filter so that we won't do it again the next time the user clicks the Add button.
subgridLookup.customFilterAdded = true;
};
//Attach the function to retrieve the lookup and apply the filter to the Add button's click event. Remember that we
//can only get the lookup after the user has clicked the Add button.
subgridAddButton.addEventListener("click", function () {
debugger;
setTimeout(getSubgridLookupAndAddFilter, 200);
});
}
//END
/////////////////////////
No comments:
Post a Comment