17.08.2010Выбор всех значений из picklist
Наверняка вы уже знакомы с решением от 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 + "||";
}
}
}
}
