Wednesday 20 February 2013

Disabling Checkbox Inside PageBlockTable

Hi All
I had come across in a requirement,the Requirement  was to select one record and disable all the records after selecting in that table. I have done it by using JavaScript, I think it will help you.
This is the page.
<apex:page>
     <apex:form>
            <script>
                   function checkboxuse(tag) {
                        var menus  = document.getElementsByClassName("Teststyle");
                        if (tag.checked == true) {
                             for (var i = menus.length - 1; i >= 0; i--)
                             {
                                    menus[i].disabled = true;
                             }
                            tag.disabled = false;
                        }
                       else {
                             for (var i = menus.length - 1; i >= 0; i--)
                             {
                                     menus[i].disabled = false;
                             }
                         }
                     }     
              </script>
             <apex:PageBlock>
                      <apex:pageBlockTable value = "{!listofRecords}" var = "c" >
                                <apex:column header = "Select" >
                                        <apex:inputCheckBox value = "{!c.selected}" id="tst" styleClass="Teststyle"                             onchange="return checkboxuse(this)"/>
                                </apex:column>
                               <apex:column header = "FieldName"> 
                                         <apex:inputFiled value = "{!c.filedAPIName}" /> 
                              </apex:column>
                     </apex:pageBlockTable>  
             </apex:PageBlock>
         </apex:form>
  </apex:page>

You have to use wrapper class, listofRecords should be a wrapper class List.