Наверняка вы уже знакомы с решением от Jim Wang для выбора нескольких значений из picklist MS CRM, а стиль самого picklist был изменен с добавлением чекбоксов.

Отличное решение, но, иногда, возникает необходимость выбирать все элементы из списка и если значений много, то будет неудобно выбирать каждое по отдельности. Поэтому вот небольшой javascript сниппет, который позволяет решить данную задачу.

1. Необходимо добавить новое значение Select all в ваш picklist

2. В событие OnSave() вставляем следующий код:

var PL = crmForm.all.new_fundingsource;
var PLV = crmForm.all.new_fundingsourcevalue;
    if(PLV.value != "")
    {
	  var PLVT = PLV.value.split("||");

	  for( var i = 0; i < PLVT.length; i++ )
		{
			if( PLVT[i] == "Select All")
			{
                        PLV.value = "";
			for( var i = 1; i < PL.options.length; i++ )
				{
                                      PLV.value += PL.options[i].text+ "||";
				}
			}
		}
    }

Все. Теперь достаточно выбрать пункт Select all и нажать сохранить, после чего будут выбраны все значения данного picklist

Код для создания multi picklist (чтобы не забыть):

var PL = crmForm.all.new_fundingsource;
var PLV = crmForm.all.new_fundingsourcevalue;

if( PL != null && PLV != null )
{
  PL.style.display = "none";
  PLV.style.display = "none";

  // Create a DIV container
  var addDiv = document.createElement("<div style='overflow-y:auto; height:80px; 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' style='border:none; width:25px; align:left;' />" );
    else
      var addInput = document.createElement("<input type='checkbox' 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.value != "")
    {
      var PLVT = PLV.value.split("||");
      for( var i = 0; i < PLVT.length; i++ )
      {
        if( PLVT[i] == pText )
          return true;
      }
    }
    return false;
  }

  // Save the selected text, this filed can also be used in Advanced Find
  crmForm.attachEvent( "onsave" , OnSave);
//debugger
  function OnSave()
  {
    PLV.value = "";
    var getInput = PL.nextSibling.getElementsByTagName("input");

    for( var i = 0; i < getInput.length; i++ )
    {
      if( getInput[i].checked)
      {

        PLV.value += getInput[i].nextSibling.innerText + "||";

      }
    }
  }
}