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