function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Raja Bipin Chandra  M BRaja Bipin Chandra M B 

How to find selected checkbox in apex:selectcheckboxes

Hello All,

I am using <apex:selectcheckboxes> with the below some of select options getting dynamically. along with "Select All' option. 

User-added image
I am using the following code for "Select All" Option and re-rendering the page.
public String[] chartYear {
			chartYear=new list<String>{'Qatar'};
		else if(chartYear!=null){
			for(String year:chartYear){
				if(year.Equals('Select All')){
					chartYear=new list<String>{'Qatar','Bahrain','Oman','Jordan','Lebanon','Syria','Select All'};
		return chartYear;
However, Once I uncheck "Select All" option, i need all the checkboxes to be unchecked. I am stuck in half-way. Appreciate your help.


Amit Chaudhary 8Amit Chaudhary 8
Please try like below code.
<apex:page controller="AccountSelectClassController" sidebar="false">
    <script type="text/javascript">
        function selectAllCheckboxes(obj,receivedInputID){
            var inputCheckBox = document.getElementsByTagName("input");
            for(var i=0; i<inputCheckBox.length; i++){
                    inputCheckBox[i].checked = obj.checked;
    <apex:form >
        <apex:pageBlock >
            <apex:pageBlockButtons >
                <apex:commandButton value="Show Selected Accounts" action="{!processSelected}" rerender="table2"/>
            <apex:pageblockSection title="All Accounts" collapsible="false" columns="2">
                <apex:pageBlockTable value="{!wrapAccountList}" var="accWrap" id="table" title="All Accounts">
                    <apex:column >
                        <apex:facet name="header">
                            <apex:inputCheckbox onclick="selectAllCheckboxes(this,'inputId')"/>
                        <apex:inputCheckbox value="{!accWrap.selected}" id="inputId"/>
                    <apex:column value="{!accWrap.acc.Name}" />
                    <apex:column value="{!accWrap.acc.BillingState}" />
                    <apex:column value="{!accWrap.acc.Phone}" />
                <apex:pageBlockTable value="{!selectedAccounts}" var="c" id="table2" title="Selected Accounts">
                    <apex:column value="{!c.Name}" headerValue="Account Name"/>
                    <apex:column value="{!c.BillingState}" headerValue="Billing State"/>
                    <apex:column value="{!c.Phone}" headerValue="Phone"/>
public class AccountSelectClassController{
    //Our collection of the class/wrapper objects wrapAccount
    public List<wrapAccount> wrapAccountList {get; set;}
    public List<Account> selectedAccounts{get;set;}
    public AccountSelectClassController(){
        if(wrapAccountList == null) {
            wrapAccountList = new List<wrapAccount>();
            for(Account a: [select Id, Name,BillingState, Website, Phone from Account limit 10]) {
                // As each Account is processed we create a new wrapAccount object and add it to the wrapAccountList
                wrapAccountList.add(new wrapAccount(a));
    public void processSelected() {
    selectedAccounts = new List<Account>();
        for(wrapAccount wrapAccountObj : wrapAccountList) {
            if(wrapAccountObj.selected == true) {
    // This is our wrapper/container class. In this example a wrapper class contains both the standard salesforce object Account and a Boolean value
    public class wrapAccount {
        public Account acc {get; set;}
        public Boolean selected {get; set;}
        public wrapAccount(Account a) {
            acc = a;
            selected = false;

Please let us know if this will help you

Amit Chaudhary
Raja Bipin Chandra  M BRaja Bipin Chandra M B
Dear Amit,

Thanks for your help... It certainly helped me.However, i have many other fields to be displayed on a single page. So i tried displaying options horizontally instead of using a table. This approach will eat my vertical space . 

Thanks again,