You need to sign in to do that
Don't have an account?

Sort Columns
Hi
Please suggest me how to add sorting in visual force page here is the my code below.
Please suggest me how to add sorting in visual force page here is the my code below.
Controller ----------- public with sharing class CCW_ContactPaginationController { //URL Passing Parameters. String PageContractId = ApexPages.currentPage().getParameters().get('ContractId'); String PageAccountId = ApexPages.currentPage().getParameters().get('AccountId'); public string baseURL{get;set;} public String existingId{get;set;} public Asset GetAccount{get;set;} public Asset GetContract{get;set;} public Asset GetExpireDate{get;set;} public Asset GetReseller{get;set;} public Asset GetDistributor{get;set;} public String IncumbentReseller{get;set;} public String Education{get;set;} public Asset GetOpportunity{get;set;} public Asset GetNewOpportunity{get;set;} public String ExpireTerms{get;set;} public boolean bundsprt{get;set;} public boolean Monthly_Quote {get;set;} //Our collection to class/wrapper objects wrapAsset public List<CCWRowItem> wrapAssetList {get; set;} public List<Asset> selectedAssets{get;set;} List<Temp_Assets__c> TempAssetList; /* * item in context from the page */ public String contextItem{get;set;} public String contextItem2{get;set;} /* * set controller */ private ApexPages.StandardSetController setCon; /* * the contact ids selected by the user */ private Set<Id> selectedContactIds; private Set<Id> selectedContactIds2= new set<Id>(); /* * constructor */ public CCW_ContactPaginationController () { GetAccount = new Asset(); //Get Account Id from Page GetContract = new Asset(); //Get Contract Name from Page GetExpireDate = new Asset(); // Date Picker GetReseller = new Asset(); GetDistributor = new Asset(); GetOpportunity = new Asset(); // Get Opportunity Id GetNewOpportunity = new Asset(); // Get New Opportunity Name fetch_data(); } public void fetch_data () { //init variable this.selectedContactIds= new Set<Id>(); //gather data set Try { if ( GetAccount.AccountId == NULL && GetContract.Name == NULL ) { if ( PageAccountId != NULL && PageContractId == NULL ) { this.setCon = new ApexPages.StandardSetController( [SELECT Id, AccountId,Product2Id,SerialNumber,last_contract_number__c,Service_Start_Date_Min__c, Service_End_Date_Max__c,InstallDate,Bundle_Support__c FROM Asset WHERE AccountId = :PageAccountId Order by Service_End_Date_Max__c Desc Limit 1000] ); } else if ( PageAccountId == NULL && PageContractId != NULL ) { Contract C; C = [SELECT Name FROM Contract WHERE Id = :PageContractId Limit 1]; this.setCon = new ApexPages.StandardSetController( [SELECT Id, AccountId,Product2Id,SerialNumber,last_contract_number__c,Service_Start_Date_Min__c, Service_End_Date_Max__c,InstallDate,Bundle_Support__c FROM Asset WHERE last_contract_number__c = :C.Name Order by Service_End_Date_Max__c Desc Limit 1000] ); } else { this.setCon = new ApexPages.StandardSetController( [SELECT Id, AccountId,Product2Id,SerialNumber,last_contract_number__c,Service_Start_Date_Min__c, Service_End_Date_Max__c,InstallDate,Bundle_Support__c FROM Asset WHERE AccountId = '0013000000DULXG' Order by Service_End_Date_Max__c Desc Limit 1000] ); } } else if ( GetAccount.AccountId != NULL && GetContract.Name == NULL ) { this.setCon = new ApexPages.StandardSetController( [SELECT Id, AccountId,Product2Id,SerialNumber,last_contract_number__c,Service_Start_Date_Min__c, Service_End_Date_Max__c,InstallDate,Bundle_Support__c FROM Asset WHERE AccountId = :GetAccount.AccountId Order by Service_End_Date_Max__c Desc Limit 1000] ); } else if ( GetAccount.AccountId == NULL && GetContract.Name != NULL ) { this.setCon = new ApexPages.StandardSetController( [SELECT Id, AccountId,Product2Id,SerialNumber,last_contract_number__c,Service_Start_Date_Min__c, Service_End_Date_Max__c,InstallDate,Bundle_Support__c FROM Asset WHERE last_contract_number__c = :GetContract.Name Order by Service_End_Date_Max__c Desc Limit 1000] ); } else if ( GetAccount.AccountId != NULL && GetContract.Name != NULL ) { this.setCon = new ApexPages.StandardSetController( [SELECT Id, AccountId,Product2Id,SerialNumber,last_contract_number__c,Service_Start_Date_Min__c, Service_End_Date_Max__c,InstallDate,Bundle_Support__c FROM Asset WHERE AccountId = :GetAccount.AccountId and last_contract_number__c = :GetContract.Name Order by Service_End_Date_Max__c Desc Limit 1000] ); } else { this.setCon = new ApexPages.StandardSetController( [SELECT Id, AccountId,Product2Id,SerialNumber,last_contract_number__c,Service_Start_Date_Min__c, Service_End_Date_Max__c,InstallDate,Bundle_Support__c FROM Asset WHERE AccountId = '0013000000DULXG' Order by Service_End_Date_Max__c Desc Limit 1000] ); } } catch(Exception e) { this.setCon = new ApexPages.StandardSetController( [SELECT Id, AccountId,Product2Id,SerialNumber,last_contract_number__c,Service_Start_Date_Min__c, Service_End_Date_Max__c,InstallDate,Bundle_Support__c FROM Asset WHERE AccountId = '0013000000DULXG' Order by Service_End_Date_Max__c Desc Limit 1000] ); } if(this.setCon != null){ this.setCon.setpageNumber(1); this.setCon.setPageSize(25); } } /* * handle item selected */ public void doSelectItem(){ this.selectedContactIds.add(this.contextItem); } public void doSelectItem2(){ this.selectedContactIds2.add(this.contextItem2); } /* * handle item deselected */ public void doDeselectItem(){ this.selectedContactIds.remove(this.contextItem); } public void doDeselectItem2(){ this.selectedContactIds2.remove(this.contextItem2); } /* * return count of selected items */ public Integer getSelectedCount(){ return this.selectedContactIds.size(); } /* * advance to next page */ public void doNext(){ if(this.setCon.getHasNext()) this.setCon.next(); } /* * advance to previous page */ public void doPrevious(){ if(this.setCon.getHasPrevious()) this.setCon.previous(); } //public List<CCWRowItem> rows = new List<CCWRowItem>(); public List<CCWRowItem> rows {get; set;} /* * return current page of groups */ public List<CCWRowItem> getContacts(){ try { rows = new List<CCWRowItem>(); for(sObject r : this.setCon.getRecords()){ Asset c = (Asset)r; CCWRowItem row = new CCWRowItem(c); if(this.selectedContactIds.contains(c.Id)){ row.IsSelected=true; if (this.selectedContactIds2.contains(c.Id)){ row.BundelSelected=true; bundsprt=true; } else { row.BundelSelected=false; bundsprt=false; } } else { row.IsSelected=false; } rows.add(row); } return rows; } catch(Exception e) { return null; } } //Retrieve the Record Type id for Renewals Opportunity for the SOQL query RecordType renewal_RT = [Select id, Name, sObjectType from RecordType where sObjectType= 'Opportunity' and Name = 'Renewal Opportunity' ]; // Store Selected Records to Object/Table public PageReference processSelected() { Integer currentPageNumber = setCon.getPageNumber(); selectedAssets = new List<Asset>(); //list<Temp_Assets__c> TempAssetList = new list<Temp_Assets__c>(); TempAssetList = new list<Temp_Assets__c>(); setCon.setpageNumber(1); PageReference resend; while(true){ List<Asset> TempAssetLists = (List<Asset>)setCon.getRecords(); //TempAssetLists = (List<Asset>)setCon.getRecords(); for(Asset assetIns : TempAssetLists ) { if(this.selectedContactIds.contains(assetIns.Id)){ selectedAssets.add(assetIns); } } if(setCon.getHasNext()){ setCon.next(); } else{ break; } } /**********Added by Unnat*********************************/ //below code should only execute if Expiry term has a value Date maxDate=Date.valueOf('2000-1-1'); Date minDate; //Calculate the maximum Date off of the selected dates //finds the latest expiry date out of the selected assets for (Asset assets: selectedAssets) { if(assets.Service_End_Date_Max__c > maxDate) { maxDate=assets.Service_End_Date_Max__c; } } System.debug('== Latest Service end Date is:'+ maxDate); minDate = maxDate; for (Asset assets: selectedAssets) { if(minDate > assets.Service_End_Date_Max__c) { minDate=assets.Service_End_Date_Max__c; } } System.debug('== Least Service end Date is:'+ minDate); //Validations if ((selectedAssets.size() < 1 ) || (expireTerms == '0' && GetExpireDate.Expire_Date__c== null )|| (expireTerms != '0' && GetExpireDate.Expire_Date__c!= null ) || (GetDistributor.Primary_Distributor__c == null ) || (GetReseller.Primary_Reseller__c == null ) || (GetOpportunity.Opportunity__c==null && GetNewOpportunity.New_Opportunity__c== null ) || (GetOpportunity.Opportunity__c!=null && GetNewOpportunity.New_Opportunity__c!= null )|| (GetExpireDate.Expire_Date__c < maxDate )) { //Validates that atleast one of the assets is selected from the install base if(selectedAssets.size() < 1 ){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,'Please select atleast one Asset to renew from the Install Base.')); } //Validates that atleast one of the Expiry Dates needs to have a value if(expireTerms == '0' && GetExpireDate.Expire_Date__c== null ){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,'Please enter the Expiry Term or Expiry Date for the selected Assets.')); } //Valation that only of the Expirty Dates can have a value else if(expireTerms != '0' && GetExpireDate.Expire_Date__c!= null ){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,'You can enter a value either in Expiry Date or Expiry Term, but not in both.')); } //Validation that the Distributor Name is required if(GetDistributor.Primary_Distributor__c == null ){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,'Please enter a value in Distributor')); } //Validation that Reseller Name is required if(GetReseller.Primary_Reseller__c == null ){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,'Please enter a value in Reseller')); } //Validation that atleast one Opportunity needs to have a value if(GetOpportunity.Opportunity__c==null && GetNewOpportunity.New_Opportunity__c== null ){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,'Please enter a value in either of the Opportunity')); } //Validation that only one of the Opportunities can have a value else if(GetOpportunity.Opportunity__c!=null && GetNewOpportunity.New_Opportunity__c!= null ){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,'You can enter a value either in Opportunity or New Opportunity, but not in both.')); } //Validation that will check if the Expiry Date has value less than the selected Asset Service End Date if(GetExpireDate.Expire_Date__c < maxDate ){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,'Expiry Date that you entered is lower than Service End Date of the Asset')); } } else { //below code should only execute if Expiry term has a value //Date maxDate=Date.valueOf('2000-1-1'); //Calculate the maximum Date off of the selected dates if (ExpireTerms !=null) { System.debug('== Expire Terms has a value'); //finds the latest expiry date out of the selected assets /***************************moved this upwards*********************************** for (Asset assets: selectedAssets) { if(assets.Service_End_Date_Max__c > maxDate) { maxDate=assets.Service_End_Date_Max__c; } } System.debug('== Latest Service end Date is:'+ maxDate); //Validation that will check if the Expiry Date has value less than the selected Asset Service End Date if(GetExpireDate.Expire_Date__c < maxDate ){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,'Expiry Date that you entered is lower than Service End Date of the Asset')); } *********************************************************************************/ //There will be another condition to add the expiry term to the latest expiry date //String a='1 Year'; System.debug('== ExpireTerms is: '+ ExpireTerms); if (ExpireTerms=='1') { System.debug('== First if condition'); maxDate=maxDate.addYears(1); } else if (ExpireTerms == '3') { System.debug('== Second if condition'); maxDate=maxDate.addYears(3); } else if (ExpireTerms == '5') { System.debug('== third if condition'); maxDate=maxDate.addYears(5); } else { maxDate= GetExpireDate.Expire_Date__c; } // resend = new PageReference('http://www.google.com'); // resend.setRedirect(false); } else { System.debug('== Else condition'); maxDate= GetExpireDate.Expire_Date__c; } System.debug('== Max Date is: ' + maxDate); Integer totalDays = minDate.daysBetween(maxDate); System.debug('== Total days difference is: '+ totalDays); /****************Completed by Unnat*****************************/ //checks if the Monthly Quote is going to be more than 36 months and Monthly Quote Checkbox is selected /*if (totalDays > 1080 && Monthly_Quote == true ) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error,'Since the Renewals in Months is more than 3 years, please uncheck the Monthly Quote checkbox')); } else {*/ System.debug('=- after the if condition'); Account ResellerAct; Account DistributorAct; Opportunity Oppt; for(Asset Act : selectedAssets) { Temp_Assets__c TempAsset = new Temp_Assets__c(); TempAsset.Name = 'Sudhir'; TempAsset.AccountId__c = Act.AccountId; TempAsset.Product__c = Act.Product2Id; //Added by Unnat TempAsset.Product_lookup__c= Act.Product2Id; TempAsset.Asset_Id__c = Act.Id; TempAsset.Serial_Number__c = Act.SerialNumber; TempAsset.Last_Contract_Number__c = Act.last_contract_number__c; TempAsset.Service_Start_Date__c = Act.Service_Start_Date_Min__c; //TempAsset.Service_End_Date__c = Act.Service_End_Date_Max__c; /***************Added by Unnat********************************************/ TempAsset.Opp_Close_Date__c = minDate; TempAsset.Monthly_Quote__c = Monthly_Quote; System.debug('=- Monthly Quote is: ' + monthly_Quote); if (Act.Service_End_Date_Max__c != null) { TempAsset.Service_End_Date__c = Act.Service_End_Date_Max__c; } else { TempAsset.Service_End_Date__c = Act.InstallDate; } TempAsset.Install_Date__c = Act.InstallDate; System.debug ('==== Reseller id is: '+ GetReseller.Primary_Reseller__c); TempAsset.Reseller__c = GetReseller.Primary_Reseller__c; TempAsset.Distributor__c = GetDistributor.Primary_Distributor__c; /****************Commented by Unnat**************************************************************************** If (GetReseller.AccountId <> NULL) { ResellerAct = [ SELECT Id FROM Account WHERE ID = :GetReseller.Primary_Reseller__c Limit 1]; TempAsset.Reseller__c = ResellerAct.Id; System.debug ('==== Reseller id 2 is: '+ ResellerAct.Id); } If (GetDistributor.AccountId <> NULL ) { DistributorAct = [ SELECT Id FROM Account WHERE ID = :GetDistributor.Primary_Distributor__c Limit 1]; TempAsset.Distributor__c = DistributorAct.Id; } ****************Completed by Unnat *****************************************************************************/ If ( GetOpportunity.Opportunity__c <> NULL ) { Oppt = [SELECT Id FROM Opportunity WHERE ID = :GetOpportunity.Opportunity__c Limit 1]; TempAsset.Existing_Opportunity__c = Oppt.Id; existingId = Oppt.Id; // Get Opportunity Id to Redirect Page } TempAsset.Incumbent_Reseller__c = IncumbentReseller; TempAsset.Education__c = Education; //TempAsset.Expiry_Date__c = GetExpireDate.Expire_Date__c; TempAsset.Expiry_Date__c= maxDate; TempAsset.New_Opportunity__c = GetNewOpportunity.New_Opportunity__c; TempAsset.Expiry_Term__c = ExpireTerms; /* Insert Bundel Checkbox Value */ if (this.selectedContactIds2.contains(Act.Id)){ bundsprt=true; } else { bundsprt=false; } TempAsset.Bundle_Support__c = bundsprt; System.debug('== Bundle Value is: ' + bundsprt); //Add the selected Assets to the List TempAssetList.add(TempAsset); } System.debug('=--2 inserted the list'); Insert TempAssetList; if ( GetNewOpportunity.New_Opportunity__c != null ) { System.debug('--inside the New opp'); Opportunity NewOpt; NewOpt = [SELECT Id, recordTypeId FROM Opportunity WHERE name = :GetNewOpportunity.New_Opportunity__c AND recordTypeId =: renewal_RT.id AND Support_Expiry_Date__c = :maxDate AND closeDate =: minDate and createdbyid = :UserInfo.getUserId() order by createddate desc Limit 1]; existingId = NewOpt.Id; // Get Opportunity Id to Redirect Page System.debug('-- Opp Id is: '+ newOpt.id); } baseUrl = URL.getSalesforceBaseUrl().toExternalForm()+'/'; System.debug('--Base URL is: '+ baseURL); resend = new PageReference(baseURL + existingId); resend.setRedirect(true); // } //end of if Condition for check of days more than 3 years } setCon.setpageNumber(currentPageNumber); return resend; } /* Do not need it anymore public PageReference pageRefMethod() { //call your action method processSelected(); /* if ( GetOpportunity.Opportunity__c != null ) { Opportunity NewOpt; NewOpt = [SELECT Id FROM Opportunity WHERE id = :GetOpportunity.Opportunity__c Limit 1]; existingId = NewOpt.Id; // Get Opportunity Id to Redirect Page } else if ( GetNewOpportunity.New_Opportunity__c != null ) { Opportunity NewOpt; NewOpt = [SELECT Id FROM Opportunity WHERE name = :GetNewOpportunity.New_Opportunity__c Limit 1]; existingId = NewOpt.Id; // Get Opportunity Id to Redirect Page } baseUrl = URL.getSalesforceBaseUrl().toExternalForm()+'/'; PageReference send = new PageReference(baseURL + existingId); send.setRedirect(true); return send; } else { return null; } }*/ /* * return whether previous page exists */ public Boolean getHasPrevious(){ try { return this.setCon.getHasPrevious(); } catch(Exception e) { return false; } } /* * return whether next page exists */ public Boolean getHasNext(){ try { return this.setCon.getHasNext(); } catch(Exception e) { return false; } } /* * return page number */ public Integer getPageNumber(){ try { return this.setCon.getPageNumber(); } catch(Exception e) { return 1; } } /* * return total pages */ Public Integer getTotalPages(){ Decimal totalSize; Decimal pageSize; Decimal pages; try { totalSize = this.setCon.getResultSize(); pageSize = this.setCon.getPageSize(); pages = totalSize/pageSize; return (Integer)pages.round(System.RoundingMode.CEILING); } catch(Exception e) { return 1; } } /* * helper class that represents a row */ public with sharing class CCWRowItem{ public Asset tContact{get;set;} public Boolean IsSelected{get;set;} public Boolean BundelSelected{get;set;} public CCWRowItem(Asset c){ this.tContact=c; this.IsSelected=false; this.BundelSelected=false; } } }
Thanks
Sudhir
Through apex coding you can sort by using compareTo method,
https://www.salesforce.com/us/developer/docs/apexcode/Content/apex_list_sorting_sobject.htm
The below article is great because it support search, pagination, sorting table using javascript,
This one is based on jquery check out the below link, It will be more helpful to you
http://blogforce9.blogspot.in/2013/11/pageblocktableenhanceradv-yet-another.html
When I click on column it must sort either Ascending or Descending. How to implement this please give me a sample example
Thanks
Sudhir
http://blogforce9dev-developer-edition.ap1.force.com/ProjectDetail?id=a0290000009M3zR