Friday 13 April 2012

Filter lookup values using javascript and fetchXml

My requirement is to filter our lookup value when my picklist value change.
//call funtion on onload
function OnLoad() {
    filterLookup();
}

// call function on picklist onchange
function filterLookup() {
    //get defaul view id
    var defaultViewId = Xrm.Page.getControl("pms_timesheetperiod").getDefaultView();
    // Get the selected Account Id in the [accountFieldName] indicated control
    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>" +
                     "</fetch>";

        // 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>" +
                         "</grid>";

        // 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
        Xrm.Page.getControl("pms_timesheetperiod").setDefaultView(defaultViewId);
    }

No comments:

Post a Comment