You need to sign in to do that
Don't have an account?
Manjunath BN
Display a Multipick list as checkbox in vf page
HI All,
I m trying to dispaly a multipicklist as checkboxes in vf page but not succeeding.
How can I display the picklists in below showed style.
Name of the field : testpick__c
values : a, b, c, d, e
Object name: test__c
Expected Output:
A B C D E
Testpick X X X X X
Thanks in advance..........
Below can be one approach.
Call describe methods on your field test__c to get its pick list values. It will return you a, b, c, d, e. Then on your vf display check boxes for each returned value. Then in your apex, check what all values are checked and save them all in your field test__c.
This is what we did recently:
in visualforce page:
<apex:page controller="picklistascheck">
<apex:form >
<apex:pageblock >
<apex:pageBlockSection columns="1">
<apex:pageblocksectionitem >
<apex:outputlabel value="Industry" />
<apex:selectcheckboxes layout="pageDirection" value="{!IndustryName}">
<apex:selectoptions value="{!IndustryNames}" />
</apex:selectcheckboxes>
</apex:pageblocksectionitem>
</apex:pageBlockSection>
</apex:pageblock>
</apex:form>
</apex:page>
in apex class:
public List<String> IndustryName { get; set; }
public picklistascheck()
{
IndustryName = new List<String>();
}
public List<selectoption> getIndustryNames()
{
list<selectoption> options = new list<selectoption>();
try
{
//Product Name is a MultiSelect Picklist
Schema.DescribeFieldResult fieldResult = Account..fields.Industry.getDescribe();
list<schema.picklistentry> values = fieldResult.getPickListValues();
for (Schema.PicklistEntry a : values)
{
options.add(new SelectOption(a.getLabel(), a.getValue()));
}
}
catch (Exception e)
{
ApexPages.addMessages(e);
}
system.debug('## Product Name Options'+ options);
return options;
}
}
All fields Edited in my visualforce page.But how to retrieve Multipicklist values as a checkboxes Dynamically.
<apex:selectcheckboxes layout="pageDirection" value="{!IndustryName}">
<apex:selectoptions value="{!IndustryNames}" />
</apex:selectcheckboxes>
Using below code i displaye all fields Dynamically.All fields will be displayed (Multipicklist also).I want how to find that multipicklist and display that mutipicklist as a checkboxes Dynamically?
Page:
<apex:commandButton value="Save" action="{!doSave}"/>
<apex:repeat value="{!listObjectFields}" var="fieldAPIName">
<apex:inputField value="{!sObjectToBind[fieldAPIName]}"/>
</apex:repeat>
</apex:pageBlockSection>
Controller:
----------------
public sObject sObjectToBind {get;set;}
public List<String> listObjectFields {get;set;}
public void doSave()
{
if( sObjectToBind != null )
insert sObjectToBind;
}
public DynamicBindingCls()
{
strtemp=ApexPages.currentPage().getParameters().get('DNF');
string objectname ='rajesh__'+strtemp+'__c';
listObjectFields = new List<String>();
Map<String , Schema.SObjectType> globalDescription = Schema.getGlobalDescribe();
Schema.sObjectType sObjType = globalDescription.get(objectname);
//take care of the sequence of following 5 statements
sObjectToBind = sObjType.newSObject();
Schema.DescribeSObjectResult r1 = sObjType.getDescribe();
List<User> lstUser = [ SELECT Id FROM User WHERE Username = 'rajesh060708@gmail.com' ];
if( sObjectToBind != null && lstUser != null && !lstUser.isEmpty() )
sObjectToBind.put('OwnerId', lstUser[0].Id);
Map<String , Schema.SObjectField> mapFieldList = r1.fields.getMap();
Integer i = 0;
for(Schema.SObjectField field : mapFieldList.values())
{
Schema.DescribeFieldResult fieldResult = field.getDescribe();
if(fieldResult.isAccessible() && fieldResult.isUpdateable())
{
listObjectFields.add(fieldResult.getName());
}
}
}
in page:
<apex:page controller="DynamicBindingCls">
<apex:form >
<apex:pageBlock >
<apex:pageBlockSection >
<apex:commandButton value="Save" action="{!doSave}"/>
<apex:repeat value="{!listObjectFields}" var="fieldAPIName" >
<apex:inputField value="{!sObjectToBind[fieldAPIName]}"/>
</apex:repeat>
</apex:pageBlockSection>
<apex:selectcheckboxes layout="pageDirection" >
<apex:selectoptions value="{!options}" />
</apex:selectcheckboxes>
</apex:pageBlock>
</apex:form>
</apex:page>
in controller:
public class DynamicBindingCls{
public sObject sObjectToBind {get;set;}
public List<String> listObjectFields {get;set;}
public List<String> listObjectFields1 {get;set;}
public List<String> PickListName { get; set; }
public list<selectoption> options{get;set;}
public void doSave()
{
if( sObjectToBind != null )
insert sObjectToBind;
}
public DynamicBindingCls()
{
string objectname ='Account';
listObjectFields = new List<String>();
listObjectFields1 = new List<String>();
PickListName = new List<String>();
Map<String , Schema.SObjectType> globalDescription = Schema.getGlobalDescribe();
Schema.sObjectType sObjType = globalDescription.get(objectname);
//take care of the sequence of following 5 statements
sObjectToBind = sObjType.newSObject();
Schema.DescribeSObjectResult r1 = sObjType.getDescribe();
List<User> lstUser = [ SELECT Id FROM User WHERE Username = 'rajesh060708@gmail.com' ];
if( sObjectToBind != null && lstUser != null && !lstUser.isEmpty() )
sObjectToBind.put('OwnerId', lstUser[0].Id);
Map<String , Schema.SObjectField> mapFieldList = r1.fields.getMap();
Integer i = 0;
for(Schema.SObjectField field : mapFieldList.values())
{
Schema.DescribeFieldResult fieldResult = field.getDescribe();
if (fieldResult.getType() == Schema.DisplayType.PickList){
listObjectFields1.add(fieldResult.getName());
}
else if(fieldResult.isAccessible() && fieldResult.isUpdateable())
{
listObjectFields.add(fieldResult.getName());
}
}
options = new list<selectoption>();
for(string pickval:listObjectFields1)
{
Schema.DescribeFieldResult fieldResult = Account.pickval.Industry.getDescribe();
system.debug('33333333'+fieldResult);
list<schema.picklistentry> values = fieldResult.getPickListValues();
for (Schema.PicklistEntry a : values)
{
options.add(new SelectOption(a.getLabel(), a.getValue()));
}
}
}
}
Not single field. i will create Every time create Multiselectpicklist using dynamic object on that time automatically in my visualforce page that multipicklist visible as checkboxes Dynamically.
Note:Not perticular field.