Hi,
I am trying to filter a lookup field using javascript PreSearch event.
I want the lookup to filter the current user's teams(that he belongs to). So far, I've tried this but I don't see the filtering done in the lookup field. Could someone please look into this and guide me. Thanks.
Here is my script:
function getUserTeam()
{
debugger;
addEventHandler();
}
function addEventHandler() {
// add the event handler for PreSearch Event
Xrm.Page.getControl("new_userteam").addPreSearch(addFilter()
{
var TeamId= getTeamId();
//create a filter xml
var filter = "<filter type='and'><condition attribute='teamid' operator='eq' value='" + TeamId+ "'/></filter>";
//add filter
Xrm.Page.getControl("new_userteam").addCustomFilter(filter);
});
}
function getTeamId(){
var myTeamId = null;
var myTeamName = null;
var guid = "[A-z0-9]{8}-[A-z0-9]{4}-[A-z0-9]{4}-[A-z0-9]{4}-[A-z0-9]{12}";
var serverUrl = Xrm.Page.context.getClientUrl();
var userId = Xrm.Page.context.getUserId();
userId = userId.match(guid);
userId = userId.input;
// Retrieve TeamIds of the Teams Current SystemUser belongs to
var userTeamsQuery = "TeamMembershipSet?$select=TeamId&$filter=SystemUserId eq guid'"+ userId +"'";
var userTeams = makeRequest(userTeamsQuery);
var teamQuery = null;
var teams = null;
if(userTeams !== null){
for(var i = 0; i< userTeams.length; i++){
userTeams[i] = userTeams[i].TeamId;
var teamId = "{" + userTeams[i] + "}";
return teamId;
}
}
}
function makeRequest(query) {
var serverUrl = Xrm.Page.context.getClientUrl();
var oDataEndpointUrl = serverUrl + "/XRMServices/2011/OrganizationData.svc/";
oDataEndpointUrl += query;
var service = GetRequestObject();
if (service != null) {
service.open("GET", oDataEndpointUrl, false);
service.setRequestHeader("X-Requested-With", "XMLHttpRequest");
service.setRequestHeader("Accept", "application/json, text/javascript, */*");
service.send(null);
var retrieved = JSON.parse(service.responseText).d;
var results = new Array();
for (var i = 0; i < retrieved.results.length; i++) {
results.push(retrieved.results[i]);
}
return results;
}
return null;
}
function GetRequestObject() {
if (window.XMLHttpRequest) {
return new window.XMLHttpRequest;
} else {
try {
return new ActiveXObject("MSXML2.XMLHTTP.3.0");
} catch (ex) {
return null;
}
}
}
*This post is locked for comments
I have the same question (0)