JScript eksempelkode: Multiselect list

Multiselect list

Objective

Create a Multiselect list on the form.

In Advanced Find, in the field MultiselectValue (new_multiselectvalue)

 

Prerequisites

Create the following fields:

Element Name    Option
Multiselect new_multiselect

Ford
Toyota
BMW
VW

 

Element Name   Field Settings
MultiselectValue new_multiselectvalue

 

Calling Code

//******************************************************************
//* Call to function for creation of Multiselect list.
//*
//* PARAMETERS
//* None
//*
//* RETURNVALUES
//* None
//* 
//******************************************************************
function createMultiselectList () {
    // Setup Multi-Select list
    multiSelectList('new_multiselect', 'new_multiselectvalue', 78);
}

 
Create Multiselect Main Code

//******************************************************************
//* This function is used to create a Checkbox style Multi-Select
//* Picklist/OptionSet.
//* The character ; is used as separator, example: Horse;Cow;Goat
//*
//* PARAMETERS
//* optionset       :     Name of the optionset
//* textfield       :     Name of the textfield to store the selected items
//* height          :     The height (19.5px per element) of the checkbox area
//*
//* RETURNVALUES
//* None
//* 
//* CREDITS
//* Original idea    :    Jim Wang (http://jianwang.blogspot.com)
//* Moderator        :    Geron Profet (http://www.crmxpg.nl)
//* 
//******************************************************************
function multiSelectList(optionset, textfield, height) {
    // PL - the optionset attribute; PLV - used to save selected optionset values
    var PL = document.getElementById(optionset);
    var PLV = document.getElementById(textfield);
    if (!PLV || textfield == '') { PLV = null; }

    if (PL != null) {
        PL.style.display = "none";
        Xrm.Page.getControl(textfield).setVisible(false);

        // Create a DIV container
        var addDiv = document.createElement("<div style='overflow-y:auto; height:" + height + "px; border:1px #6699cc solid; background-color:#ffffff;' />");
        PL.parentNode.appendChild(addDiv);

        // Initialise checkbox controls
        for (var i = 1; i < PL.options.length; i++) {
            var pOption = PL.options[i];
            if (!IsChecked(pOption.text))
                var addInput = document.createElement("<input type='checkbox' name=" + pOption.text + " value=" + pOption.value + " style='border:none; width:25px; align:left;' />");
            else
                var addInput = document.createElement("<input type='checkbox' name=" + pOption.text + " value=" + pOption.value + " checked='checked' style='border:none; width:25px; align:left;' />");

            var addLabel = document.createElement("<label />");
            addLabel.innerText = pOption.text;

            var addBr = document.createElement("<br>"); //it's a 'br' flag

            PL.nextSibling.appendChild(addInput);
            PL.nextSibling.appendChild(addLabel);
            PL.nextSibling.appendChild(addBr);
        }

        // Check if it is selected
        function IsChecked(pText) {
            if (!PLV) return;

            if (PLV.value != "") {
                var PLVT = PLV.value.split(";");
                for (var i = 0; i < PLVT.length; i++) {
                    if (PLVT[i] == pText)
                        return true;
                }
            }
            return false;
        }
    }
    // Attach to onsave event
    crmForm.attachEvent("onsave", function () { onSaveMultiSelectList(optionset, textfield); });
}

 
Helper Code

//******************************************************************
//* Helperfunction for the multiSelectList function.
//* This function saves the value, from the multiselected values,
//* to a textfield.
//*
//* NOTE: The text of the elements in the optionset must be unique.
//*
//* PARAMETERS
//* optionset       :     Name of the optionset
//* textfield       :     Name of the textfield to store the checked elements
//*
//* RETURNVALUES
//* None
//* 
//******************************************************************
function onSaveMultiSelectList(optionset, textfield) {
    var optionsetId = document.getElementById(optionset);
    var getInput = optionsetId.nextSibling.getElementsByTagName("input");
    var result = '';

    for (var i = 0; i < getInput.length; i++) {
        if (getInput[i].checked) {
            result += getInput[i].nextSibling.innerText + ";";
        }
    }

    // Save value in textfield
    control = Xrm.Page.getControl(textfield);
    attribute = control.getAttribute();
    attribute.setValue(result);
}

Bliv medlem af CRMUG DK

De regionale afdelinger i CRMUG giver mulighed for a mødes med andre medlemmer af CRMUG i dit lokalområde. Hermed får du mulighed for at mødes ansigt til ansigt og vidensdele med andre brugere af Microsoft Dynamics CRM i dit område.

Læs mere den Danske afdeling af CRMUG...

Om Henrik Jensen

Jeg har altid fingeren på pulsen når det drejer sig om Microsofts produkter & teknologier, og især når det handler om Microsoft Dynamics CRM.

Henrik Jensen

Jeg har arbejdet professionelt i IT-branchen mere end 25 års, deraf mere end 18 år med CRM-systemer, og samtidig indehaver af mere end 50 Microsoft-certificeringer.

Mobil: +45 20 300 300
E-mail: hj@easyconsult.dk

EASYConsult ApS

Læs mere...

Downloads, værktøjer, installation og JScript

Downloade komponenter til MS CRM:
    • Microsoft Dynamics CRM 4.0
    • Microsoft Dynamics CRM 2011
    • Microsoft Dynamics CRM 2013
    • Microsoft Dynamics CRM 2015
    • Microsoft Dynamics CRM 2016

Liste over Opdateringspakker (Rollups):
    • Microsoft Dynamics CRM 4.0
    • Microsoft Dynamics CRM 2011
    • Microsoft Dynamics CRM 2013
    • Microsoft Dynamics CRM 2015
    • Microsoft Dynamics CRM 2016

Værktøjer til MS CRM:
    • Liste med værktøjer til MS CRM

Krav og opsætninger til installation:
    • Krav og opsætninger MS CRM 2011
    • Krav og opsætninger MS CRM 2013
    • Krav og opsætninger MS CRM 2015
    • Krav og opsætninger MS CRM 2016

JScript eksempelkode:
    • Javascript API-reference
    • Javascript eksempelkode

Diverse værktøjer:
    • Sysinternals
    • PowerShell og MS CRM 2011

Visual Studio, SSIS og Kingswaysoft
    • Visual Studio 2017
    • Dataværktøjer (SSIS) 2017
    • Kingswaysoft

Månedsliste

Forbehold

Alt hvad du læser på denne blog er alene udtryk for mine egne holdninger og meninger, og kan ikke henføres til andet end som så.

De løsninger jeg fremstiller på denne blog er ikke nødvendigvis testet i et driftsmiljø. Hvis du gør brug af mine løsninger er det på eget ansvar.