Tuesday, 10 July 2012

Filter lookup values using javascript and fetchXml in CRM 2011

In this article , I am going to explain how to filter lookup using javascript.
CRM provide inbuilt functionality for filter lookup from other lookup but in this article i am filtering lookup from picklist value

// call function on picklist onchange and form onload event 
function filterLookup() {
    //get defaul view id
    var defaultViewId = Xrm.Page.getControl("pms_timesheetperiod").getDefaultView();
    var fiscalYear = Xrm.Page.getAttribute("pms_fiscalyear").getValue();
    if (fiscalYear != null) {

        // use randomly generated GUID Id for our new view
        var viewId = "{1DFB2B35-B07C-44D1-868D-258DEEAB88E2}";
        var entityName = "pms_timesheetperiod";

        // give the custom view a name
        var viewDisplayName = "Active time sheet periods for " + fiscalYear + "";

        // find all contacts where [Parent Customer] = [Account indicated by AccountId]
        // AND where [Statecode] = Active
        var fetchXml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" +
                     "<entity name='pms_timesheetperiod'>" +
                     "<attribute name='pms_fiscalyear' />" +
                     "<attribute name='pms_name' />" +
                     "<filter type='and'>" +
                     "<condition attribute='pms_fiscalyear' operator='eq' value='" + fiscalYear + "' />" +
                     "</filter>" +
                     "</entity>" +
        // build Grid Layout
        var layoutXml = "<grid name='resultset' " +
                               "object='1' " +
                               "jump='pms_timesheetperiodid' " +
                               "select='1' " +
                               "icon='1' " +
                               "preview='1'>" +
                           "<row name='result' " +
                                "id='pms_timesheetperiodid'>" +
                             "<cell name='pms_fiscalyear' " +
                                   "width='200' />" +
                             "<cell name='pms_name' " +
                                   "width='250' />" +
                           "</row>" +
        // add the Custom View to the indicated [lookupFieldName] Control
        Xrm.Page.getControl("pms_timesheetperiod").addCustomView(viewId, entityName, viewDisplayName, fetchXml, layoutXml, true);
    else {
        // set default view id


  1. Navish, I like your blogs but they are not very clear .. can you please add what is the purpose behind using this code, for e.g any business scenario and also the step by step approach (Adding Screen shots will be great help to new CRM developers) .. you seems to have a great talent .. i read all your blogs but i find difficulty and question myself why Navish has blogged, what is the reason behind it. Please do the needful. It would be great to learn from such a experience developer.

    Reply Delete
    1. Hi Puneet, I know my code only understandable to the experienced CRM Developer. I will try to make articles more user friendly (with screen shots and example)


Note: only a member of this blog may post a comment.