Friday, March 15, 2013

Swapping of Two Records


Visualforce page:

<apex:page controller="swapcls" id="p">
    <apex:form id="f">
        <apex:pageBlock id="pb" >
            <div align="center">       
            <apex:commandButton value="Swap" action="{!swapmethod}"/>
            </div>
            <apex:pageMessage summary="Select any Two Records" severity="warning" strength="3" rendered="{!pgmsg}" />
            <apex:pageblocktable value="{!lw}" var="ll" id="pbt" >
                <apex:column headerValue="Action" width="80px" id="c">
                    <apex:inputCheckbox value="{!ll.selected}" id="icb"/>
                </apex:column>
                <apex:column value="{!ll.num}" headerValue="Index" width="100px"/>
                <apex:column value="{!ll.name.name}"/>
               <apex:column value="{!ll.name.rating}"/>
                <apex:column value="{!ll.name.phone}"/>
            </apex:pageblocktable>
        </apex:pageBlock>
    </apex:form>
</apex:page>

Apex Class:


global with sharing class swapcls {

    public boolean pgmsg { get; set; }
   
    public PageReference swapmethod() {
     List<Integer> li=new List<Integer>();
    List<Account> lstacc=new List<Account>();
     la=new List<Account>();
         for(integer i=0; lw.size()>i;i++){
            if(lw[i].selected==true){
            lstacc.add(lw[i].name);
            li.add(i);
                                    }
                                           }
            System.debug('--------------------'+lstacc);
            if(lstacc.size()>2||lstacc.size()<2){
                pgmsg=true;
                                       }
            else{
               lw.remove(li[0]);
               lw.remove(li[1]-1);
               lw.add(new wrapper(lstacc[0],li[1],false));
               lw.add(new wrapper(lstacc[1],li[0],false));
                 }  
                 lw.sort();           
                 return null;
                                             }
    
    List<Account> la;
    public List<wrapper> lw{get; set;}
    public swapcls(){
        lw=new List<wrapper>();
        la=[select id,name,rating,phone from Account limit 50];
        for(integer i=0; la.size()>i;i++){          
            lw.add(new wrapper(la[i],i,false));
            
                         }
                    }

    global class wrapper implements comparable{
        public Account name{get; set;}
        public boolean selected{get; set;}
        public integer num{get; set;}
        public wrapper(Account n,integer nbr,boolean c){
            name=n;
            num=nbr;
            selected=c;
                                             }
    global Integer compareTo(Object compareTo) {
        wrapper compareTolw = (wrapper)compareTo;
        if (num == compareTolw.num) return 0;
        if (num > compareTolw.num) return 1;
        return -1;        
                                                }                            
                                              }
                                  }

No comments:

Post a Comment