To make a Parent Child OptionSet or PickList in MS CRM 2011 use the following line of code:
Also You can change values in second OptionSet based on first OptionSet Value
function PicklistOneOnchange() {
var picklistOneName = "new_healthplantype"; //name of the first picklist
var picklistTwoName = "new_healthinsuranceplan"; //name of the picklist with dynamic values
var picklistOne = Xrm.Page.getControl(picklistOneName);
var picklistOneAttribute = picklistOne.getAttribute();
var picklistTwo = Xrm.Page.getControl(picklistTwoName);
var picklistTwoAttribute = picklistTwo.getAttribute();
var picklistOneSelectedOption = picklistOneAttribute.getSelectedOption();
var picklistOneSelectedText = "";
if (picklistOneSelectedOption != null)
{
picklistOneSelectedText = picklistOneSelectedOption.text;
}
//This "if" statement stores the original values from the dynamic picklist.
//Very important if the user hasn't made a selection on the first picklist or if the selection changes
if (picklistTwo.flag == true)
{
picklistTwo.clearOptions();
var origOptions = picklistTwo.originalPicklistValues;
for (var i = origOptions.length - 1; i >= 0; i--)
{
if(origOptions[i].text != "")
{
picklistTwo.addOption(origOptions[i]);
}
}
}
else
{
picklistTwo.originalPicklistValues = picklistTwoAttribute.getOptions();
picklistTwo.flag = true;
}
if (picklistOneSelectedText != null && picklistOneSelectedText != "")
{
var picklistTwoOptions = picklistTwoAttribute.getOptions();
for (var i = picklistTwoOptions.length - 1; i >= 0; i--) {
if (picklistTwoOptions[i].value != null && picklistTwoOptions[i].value != "") {
var optionText = picklistTwoOptions[i].text;
var optionValue = picklistTwoOptions[i].value;
//BEGIN: If the picklist is set to HMO
if(picklistOneSelectedText == "HMO")
{
//Remove these values
if (optionText == "PPO 500" || optionText == "PPO 750" || optionText == "POS Silver" || optionText == "POS Gold")
{
picklistTwo.removeOption(optionValue);
}
}
//END: HMO Selection
//BEGIN: If the picklist is set to PPO
if(picklistOneSelectedText == "PPO")
{
//Remove these values
if (optionText == "HMO 5K" || optionText == "HMO 7K" || optionText == "POS Silver" || optionText == "POS Gold")
{
picklistTwo.removeOption(optionValue);
}
}
//END: PPO Selection
//BEGIN: If the picklist is set to POS
if(picklistOneSelectedText == "POS")
{
//Remove these values
if (optionText == "HMO 5K" || optionText == "HMO 7K" || optionText == "PPO 500" || optionText == "PPO 750")
{
picklistTwo.removeOption(optionValue);
}
}
//END: POS Selection
}
}
}
}
Also You can change values in second OptionSet based on first OptionSet Value
function PicklistOneOnchange() {
var picklistOneName = "new_healthplantype"; //name of the first picklist
var picklistTwoName = "new_healthinsuranceplan"; //name of the picklist with dynamic values
var picklistOne = Xrm.Page.getControl(picklistOneName);
var picklistOneAttribute = picklistOne.getAttribute();
var picklistTwo = Xrm.Page.getControl(picklistTwoName);
var picklistTwoAttribute = picklistTwo.getAttribute();
var picklistOneSelectedOption = picklistOneAttribute.getSelectedOption();
var picklistOneSelectedText = "";
if (picklistOneSelectedOption != null)
{
picklistOneSelectedText = picklistOneSelectedOption.text;
}
//This "if" statement stores the original values from the dynamic picklist.
//Very important if the user hasn't made a selection on the first picklist or if the selection changes
if (picklistTwo.flag == true)
{
picklistTwo.clearOptions();
var origOptions = picklistTwo.originalPicklistValues;
for (var i = origOptions.length - 1; i >= 0; i--)
{
if(origOptions[i].text != "")
{
picklistTwo.addOption(origOptions[i]);
}
}
}
else
{
picklistTwo.originalPicklistValues = picklistTwoAttribute.getOptions();
picklistTwo.flag = true;
}
if (picklistOneSelectedText != null && picklistOneSelectedText != "")
{
var picklistTwoOptions = picklistTwoAttribute.getOptions();
for (var i = picklistTwoOptions.length - 1; i >= 0; i--) {
if (picklistTwoOptions[i].value != null && picklistTwoOptions[i].value != "") {
var optionText = picklistTwoOptions[i].text;
var optionValue = picklistTwoOptions[i].value;
//BEGIN: If the picklist is set to HMO
if(picklistOneSelectedText == "HMO")
{
//Remove these values
if (optionText == "PPO 500" || optionText == "PPO 750" || optionText == "POS Silver" || optionText == "POS Gold")
{
picklistTwo.removeOption(optionValue);
}
}
//END: HMO Selection
//BEGIN: If the picklist is set to PPO
if(picklistOneSelectedText == "PPO")
{
//Remove these values
if (optionText == "HMO 5K" || optionText == "HMO 7K" || optionText == "POS Silver" || optionText == "POS Gold")
{
picklistTwo.removeOption(optionValue);
}
}
//END: PPO Selection
//BEGIN: If the picklist is set to POS
if(picklistOneSelectedText == "POS")
{
//Remove these values
if (optionText == "HMO 5K" || optionText == "HMO 7K" || optionText == "PPO 500" || optionText == "PPO 750")
{
picklistTwo.removeOption(optionValue);
}
}
//END: POS Selection
}
}
}
}
No comments:
Post a Comment