Skip to main content

Hi,


I have implemented custom rendering functionality on a custom picklist.


Please find attached screen shot.


Functionality:


There are three picklists A, B, C.


Whenever values of A & B will be changed, different values of C will be displayed.


Issue: Suppose user will select values in picklist A and B, and on basis of that user select value on picklist C.


But before saving user want to change value of Picklist B , thus picklist C values should be rendered again and should display different values.


But it is showing previous selected value and new rendered values.


Means picklistentries is not being refreshed properly.


I have attached few screen shot regarding this issue, Please help as it is urgent.



Attached is snippet


Through this snippet , i am getting values in picklist entries


var element = arguments[0],value = skuid.utils.decodeHTML(arguments[1]),$ = skuid.$;


//Get Lead model information

var leadmodel = skuid.model.getModel(“Lead”);


//Fetch first row of Lead info.  
var raw= leadmodel.getFirstRow();

// Get Matter type field value
var MatterType=raw.Matter\_Type\_\_c;

var Attorney=raw.Attorney\_\_c;

// Get WLG office field value
var wlgoffice=raw.WLG\_Office\_\_c;

// Perform query on salesforce object on basis of Matter type and WLG office on Lead
var result = sforce.connection.query("SELECT Name,Attorney\_\_c,Matter\_Type\_\_c,Wlg\_Office\_\_c,Attornies\_\_c,Id FROM Consulting\_Attorney\_\_c where Matter\_Type\_\_c ='"+MatterType+"'AND Wlg\_Office\_\_c ='"+wlgoffice+"'");
var Att = result.getArray("records");


if(Att.length!==0 && Att 0].Attornies\_\_c!==null)

{

var array = Att 0].Attornies__c.split(‘,’);

var records = array.toString().replace(/,/g , “‘,’”);


// Fetch Salesforce users informations

var result1 = sforce.connection.query(“SELECT name FROM user WHERE Id in ('”+records+“')”);

var Users = result1.getArray(“records”);


// Create a array for Custom Picklist  

var picklistEntries = ;


picklistEntries = element.metadata.picklistEntries;  

// if you don’t do this, then the “real” values are already in the picklist and the code below will add duplicate values


picklistEntries.length = 0;


    for(var a=0;a<users.length>            picklistEntries.push( { value:Usersia].Name , label:Users a].Name, defaultValue: false, active: true  });
}

skuid.ui.fieldRenderers>element.metadata.displaytype]element.mode;

}


Through below snippet i am rendering PIcklist C every time Picklist A and B will change (Through Model action)


var params = argumentsp0];


 var model = params.model;

var $ = skuid.$;

// Loop through this model’s registered fields


$.each(model.registeredFields,function(){


//  If this is the row that was updated, loop through the fields to find the one we want

if ( this.id === 'Attorney__c') {

this.render();

}

});


Thanks in advance


</users.length>

Gopal,

Try adding a Model Action that runs your snippet every time field A or B is changed.

Thanks,

Bill


Thanks, Bill.

I have created a model action which is updating Picklsit C value by --None-- and behind the scene(in Salesforce)

I have made that picklist required.

Thank you again.