I need some help with my code as the implementation of applying custom FetchXml to a subgrid has appeared to have changed in CRM 2011 to CRM 2013. Please note this is NOT the issue of setParameter vs SetParameter casing as I keep finding all over the net. My issue is how to reference the subgrid and call the SetParameter method at all.
Here is my code:
function uc_addCaseFilterToCaseGrid() {
var contactGuid = Xrm.Page.data.entity.getId();
//create a filter xml
if (contactGuid != null)
{
var filter = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>";
filter += "<entity name='uc_crecord'>";
filter += "<attribute name='uc_casemanager' />";
filter += "<attribute name='uc_cindividual' />";
filter += "<attribute name='uc_rindividual'/>";
filter += "<filter type='or'>" +
"<filter type='or'>" +
"<condition attribute='uc_casemanager' operator='eq' value='" + contactGuid + "'/>" +
"<condition attribute='uc_cindividual' operator='eq' value='" + contactGuid + "'/>" +
"<condition attribute='uc_rindividual' operator='eq' value='" + contactGuid + "'/>" +
"</filter>" +
"</filter>" +
"</entity>" +
"</fetch>";
//add filter
//var caseGrid = Xrm.Page.getControl("gPR");
***//var caseGrid = Xrm.Page.ui.controls.get("gPR");
var caseGrid = document.getElementById("gPR").control;***
if (caseGrid == null)
{
//The caseGrid hasn't loaded, wait 1 second and then try again
setTimeout(uc_addCaseFilterToCaseGrid, 3000);
return;
}
caseGrid.control.SetParameter("fetchXML",filter);
caseGrid.control.Refresh();
}
}
This code does not work because the bold, italisized line is causing me a problem.
If I use getElementByID (not recommended, and not the approach I'd like to take) the code SetParameter executes as expected.
However, I want to use the following to set the variable:
var caseGrid = Xrm.Page.getControl("gPR");
as I want to ensure future support. But when I call SetParameter I get an error "Object doesn't support property or method 'SetParameter'". What gives?
I've tried the following:
caseGrid.control.SetParameter("fetchXML",filter);
caseGrid.SetParameter("fetchXML",filter);
Xrm.Page.getControl(gPR)._control.get_innerControl()._element.control.SetParameter("fetchXML",filter);
I've tried setParameter and SetParameter and both yield the same result.
I've tested the fetchXml using the XRMToolkit and its fine so this is not the issue (a long shot but it might have been!)
I'm going around the bend trying to figure it out - is it possible that you just can't use SetParameter anymore in CRM 2013 (but you could in 2011)? If so, how else can I supply the fetchXml for a subgrid?
Tested in IE11, CRM 2013 Update Rollup pack 1 + Service Pack 1.
Thanks for your time.