You need to sign in to do that
Don't have an account?
Brijesh_85
Fill Pick List Dynamically
Hi All,
I want to fill the data in picklist by using query or want to fill the data from custom objects. how do I do??
And also in My Application there are two picklists. so based on the first selection I want to fill the second Picklist.
I know about "Field Dependency" option.But that is again Static. I want to fill it dynamically.
I want to do it By AJAX. Is it possible??
Thanks in Advance,
Brijesh Thakur
I don't think my particular code is going to help you. This is a snippet from a big chunk of code that allows the user to select a product from a picklist and based on that, populates a variable number of other picklists representing sets of components which the user can choose from. Default prices are displayed and the user can override the prices as well. The variable picklists are pre-built and cached so they can just be substituted in. It's somewhat specific to their needs with some other background processing. I also don't know if the client I did it for would be comfortable with my posting it.
The code earlier is just the simple select of the top level picklist.
In this case, you need to write a getItems routine that returns a list, have a String called "SelectedItem" with get and set defined. You want to write onChange routine that does something with your other picklist selection option array and then returns a (possibly null) pageReference.
Don't know if this helps. I've found the documentation to be very light on examples, but good on concepts. Best, Steve.
All Answers
Hi,
True, But based on the requirement I have to use the Picklist. And also..based on the first selection I have to fill second picklist.
Please Guide me,
Thanks,
Brijesh Thakur
By "AJAX" I presume you mean using the salesforce.com AJAX toollkit? If so, here is a sample that should get you on your way...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Dynamic Picklist Select</title> <!-- Created by: Greg Hacic Last Update: 11 March 2009 Questions?: http://www.InteractiveTies.com/ NOTES: This sControl will dynamically build any picklist as long as the salesforce.com field is a single or multi select picklist. To test this functionality for other picklists simply change the selTable value to the Object you want and change the selField value to a picklist field on the table listed in selTable. --> <link href="/sCSS/15.0/Theme2/default/common.css" type="text/css" media="handheld,print,projection,screen,tty,tv" rel="stylesheet"> <link href="/sCSS/15.0/Theme2/allCustom.css" type="text/css" media="handheld,print,projection,screen,tty,tv" rel="stylesheet"> <script src="/soap/ajax/15.0/connection.js" type="text/javascript"></script> <script language="JavaScript" type="text/javascript"> <!-- //intiates page and loads data function pageInit() { var selTable = "User"; var selField = "TimeZoneSidKey"; var picklistValues = getPickVals(selTable,selField); var plHTML = "<select id=\"picklistSelect\"><option value=\"\" selected>All</option>"; for (var a=0; a<picklistValues.length; a++) { plHTML += "<option value=\""+picklistValues[a]+"\">"+picklistValues[a]+"</option>"; } plHTML += "</select>"; document.getElementById("plVals").innerHTML = plHTML; document.getElementById("fieldName").innerHTML = "<span class=\"requiredMark\">*</span>"+selField; document.getElementById("fieldText").innerHTML = "Field: "+selField+"<span class=\"titleSeparatingColon\">:</span>"; document.getElementById("objectText").innerHTML = "Object: "+selTable; } //returns an array of picklist values for the passed table and field function getPickVals(table,field) { var returnArray = new Array(); //return array holding all values var oTable = sforce.connection.describeSObjects([table]); //describe call for object var oFields = oTable[0].fields; //look at fields for object for (var a=0; a<oFields.length; a++) { //loop through all the fields if (oFields[a].name == field) { //if the field is the requested one var oPicklistVals = oFields[a].picklistValues; //look at all the picklist values for field for (var b=0; b<oPicklistVals.length; b++) { //loop through all picklist values returnArray.push(oPicklistVals[b].value); //push all picklist options to return array } break; //we found field and picklist values so exit loop } } return returnArray; //send back data } //--> </script> </head> <body class="Custom184Tab detailPage" onLoad="pageInit()"> <table border="0" cellspacing="0" cellpadding="0" width="100%"> <tr> <td> <div class="bPageTitle"> <div class="ptBody secondaryPalette"><div class="content"><img src="/servlet/servlet.ImageServer?id=0153000000084iV&oid=00D300000001L5c&lastMod=1179974461000" alt="Home" class="pageTitleIcon userDefinedImage"><h1 class="pageType">iTies Examples<span class="titleSeparatingColon">:</span></h1><h2 class="pageDescription"> Dynamic Picklist</h2><div class="blank"> </div></div><div class="links"> </div></div> </div> <div class="bPageBlock bEditBlock secondaryPalette"><div class="pbHeader"><table border="0" cellpadding="0" cellspacing="0"><tr><td class="pbTitle"><img src="/s.gif" alt="" width="1" height="1" class="minWidth" title=""><h2 class="mainTitle" id="objectText"> </h2></td><td class="pbButton" id="buttonsTop"> </td></tr></table></div> <div class="pbBody"> <div class="pbSubheader first tertiaryPalette"><h3 id="fieldText">Information<span class="titleSeparatingColon">:</span></h3></div> <div class="pbSubsection"> <table class="detailList" border="0" cellpadding="0" cellspacing="0"> <tr> <td class="labelCol last requiredInput"><label for="field" id="fieldName"><span class="requiredMark">*</span>Loading...</label></td> <td class="data2Col last" colspan="3"><div class="requiredInput"><div class="requiredBlock"></div><div id="plVals" name="plVals"></div></div></td> </tr> <tr> <td class="labelCol last empty"> </td> <td class="dataCol col02 last empty"> </td> <td class="labelCol last empty"> </td> <td class="dataCol last empty"> </td> </tr> </table> </div> </div> <div class="pbBottomButtons"><table border="0" cellpadding="0" cellspacing="0"><tr><td class="pbTitle"><img src="/s.gif" alt="" width="1" height="1" class="minWidth" title=""> </td><td class="pbButtonb" id="buttonsBottom"> </td></tr></table></div> <div class="pbFooter secondaryPalette"><div class="bg"></div></div> </div> </td> </tr> </table> </body> </html>
It doesn't do the dynamic population of a second picklist but from this you should be able to put something together. Let me know if you have questions,
-greg
Also:
If you were going to do this in a component like that which Greg submitted, you'd be much better served doing it in Visualforce than in an Scontrol.
I agree 100% with Werewolf's comments. But I was unsure of the context of the original question.
-greg
Hi All,
Yes , I am looking for AJAX technology supported by Salesforce.com or not.
And why I am pushing to use LookUp . Honestly speaking I dont like it.
I am repeating My Question :- I want to fill PickList dynamically. The data for the Picklist should come from Custom Object.
My Feeling is that I should write a query and store it in one List using Apex. On the visualsorce page I can get it by "<Apex:page extentions=" "> option & can iterate it to get the value of that Sobject.
In J2ee on JSP page I can do it by <Option Collection> Tag. How do I do in Salesforce.com
Please answer the above question.
Thanks,
Brijesh Thakur
Hi all,
I am able to populate the PickList dynamically by using Apex + <apex:selectOptions> tag.
Below is the solution.
Apex Code :-
StudentExtention.cls
public List<selectOption> StudentNameOptions {get {
List<selectOption> studentName =new List<selectOption>();
studentName.add(new selectOption('None', 'None'));
for (Students__c st :
[select Name,Student_Name__c
from Students__c])
studentName.add(new selectOption(st.Name, st.Student_Name__c));
return studentName;
}
private set;}
Visualforce Code :-
<apex: page standardController="Students__c" extensions="StudentExtension">
<apex:selectList value="id" size="1">
<apex:selectOptions Value="{!StudentNameOptions}"></apex:selectOptions>
</apex:selectList>
</apex: page>
Now I am looking for Ajax call on Picklist's onChange event.so that based on that I can fill another Picklist.
Please help me to solve the Above problem.
Thanks,
Brijesh Thakur
<apex:pageBlockSection title="Specification" columns="2" id="theSection"> <apex:inputField value="{!Environment_Line_Item__c.Server_Name__c}" id="srv"/> <apex:actionStatus id="theStatus" startText="(Refreshing...)" stopText="" /> <apex:pageBlockSectionItem > <apex:outputLabel value="Item" for="sel1"/> <apex:actionRegion id="region1"> <apex:selectList size="1" value="{!SelectedItem}" required="true" multiselect="false" id="sel1"> <apex:actionSupport event="onchange" immediate="false" rerender="theForm" action="{!onchange}" status="theStatus"/> <apex:selectOptions value="{!Items}"/> </apex:selectList> </apex:actionRegion> </apex:pageBlockSectionItem> </apex:pageBlockSection>
Is this what you're looking for? -Steve
Hi,
Thanks...
Yes I am looking for the same..
Can you please elaborate more ?? means can you please post Apex code also ?
Brijesh Thakur
I don't think my particular code is going to help you. This is a snippet from a big chunk of code that allows the user to select a product from a picklist and based on that, populates a variable number of other picklists representing sets of components which the user can choose from. Default prices are displayed and the user can override the prices as well. The variable picklists are pre-built and cached so they can just be substituted in. It's somewhat specific to their needs with some other background processing. I also don't know if the client I did it for would be comfortable with my posting it.
The code earlier is just the simple select of the top level picklist.
In this case, you need to write a getItems routine that returns a list, have a String called "SelectedItem" with get and set defined. You want to write onChange routine that does something with your other picklist selection option array and then returns a (possibly null) pageReference.
Don't know if this helps. I've found the documentation to be very light on examples, but good on concepts. Best, Steve.
Hi there.
I understand how to do this using Visualforce. :)
However, for a change control app, I'm trying to populate a picklist with the list of custom objects for my org, dynamically.
Is it possible? Is there an all-encompassing object I can query to obtain my list of custom objects? or do I have to just include every custom object in the SOQL SELECT statement?
Thanks.
Roz