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

Passing List values of an object to other vf page
Hello all,
I want to pass the List values of an object to the other Visualforce page using a query. Since we cannot pass list as parameter to other page i am using
public PageReference DisplayDetails() {
PageReference reRend = new PageReference('/apex/wrapperCustomObjpage2');
reRend.setRedirect(false);
return reRend;
}
But the variables in the controller were reintializing after entering into the other page. I am not able to display the data into pageblocktable. Could any one suggest me the best approach
I want to pass the List values of an object to the other Visualforce page using a query. Since we cannot pass list as parameter to other page i am using
public PageReference DisplayDetails() {
PageReference reRend = new PageReference('/apex/wrapperCustomObjpage2');
reRend.setRedirect(false);
return reRend;
}
But the variables in the controller were reintializing after entering into the other page. I am not able to display the data into pageblocktable. Could any one suggest me the best approach
There are two pages lets say page1 and page 2 both were using same controller. In first page i am selecting records from an Object. Now i have to display the selected records in second object. I am able to get the expected logs for the first page but when i click on display button which navigates to next page. The variable are getting reintialized and i am not able to display the selected records in second page
Page 1 :
<apex:page controller="wrapCustomObj">
<apex:form >
<apex:pageBlock title="Employee Details">
<apex:pageBlockSection title="List of Employee" id="details">
<apex:pageBlockTable value="{!empDetails}" var="e">
<apex:column >
<apex:inputCheckbox value="{!e.selected}"/>
</apex:column>
<apex:column value="{!e.empDet.name}"/>
<apex:column value="{!e.empDet.Salary__c}"/>
</apex:pageBlockTable>
</apex:pageBlockSection>
<apex:pageBlockButtons location="bottom">
<apex:commandButton action="{!previous}" value="Previous" reRender="details"/>
<apex:commandButton action="{!next}" value="Next" reRender="details"/>
<apex:commandButton action="{!fPage}" value="First Page" reRender="details"/>
<apex:commandButton action="{!lPage}" value="Last Page" reRender="details"/>
</apex:pageBlockButtons>
<apex:pageBlockButtons location="bottom">
<apex:commandButton action="{!DisplayDetails}" value="Details"/>
</apex:pageBlockButtons>
<apex:outputLabel >{!SelectedEmp}</apex:outputLabel>
</apex:pageBlock>
</apex:form>
</apex:page>
Page 2 :
<apex:page controller="wrapCustomObj">
<apex:form >
<apex:pageBlock >
<apex:pageBlockTable value="{!SelectEmpDetails}" var="e">
<apex:column value="{!e.empDet.name}"/>
<apex:column value="{!e.empDet.Salary__c}"/>
</apex:pageBlockTable>
<apex:outputPanel >
<apex:outputLabel >"{!SelectEmpDetails}"</apex:outputLabel>
</apex:outputPanel>
</apex:pageBlock>
</apex:form>
</apex:page>
Controller :
public with sharing class wrapCustomObj {
public Integer limitSize=5;
public Integer OffsetSize=0;
public Integer totalRecs=0;
public List<employee__c> selectedEmp=new List<employee__c>();
public List<wrapObj> wrpList{get;set;}
public List<wrapObj> selectedwrpList{get;set;}
public List<employee__c> getSelectedEmp()
{
if(selectedEmp.size()>0)
{
System.debug(' selectEmp '+selectedEmp);
return selectedEmp;
}
else
return null;
}
public void lPage() {
OffsetSize=totalrecs-math.mod(totalRecs,limitSize);
}
public void fPage() {
OffsetSize=0;
}
public void next() {
OffsetSize=OffsetSize+limitSize;
}
public void previous() {
OffsetSize=OffsetSize-limitSize;
}
public PageReference DisplayDetails() {
PageReference reRend = new PageReference('/apex/wrapperCustomObjpage2');
reRend.setRedirect(false);
return reRend;
}
public List<wrapObj> getEmpDetails() {
wrpList=new List<wrapObj>();
List<Employee__c> emps=[select id,name,salary__c from employee__c where salary__c !=null limit:limitSize Offset:OffsetSize];
totalRecs=[select count() from Employee__c];
for(Employee__c e:emps)
{
wrpList.add(new wrapObj(e,false));
}
return wrpList;
}
public List<wrapObj> getSelectEmpDetails()
{
selectedwrpList=new List<wrapObj>();
for(wrapObj w:getEmpDetails())
{
System.debug(' selectEmDetails '+w);
if(w.selected==true)
selectedwrpList.add(w);
}
return selectedwrpList;
}
public class wrapObj
{
public Employee__c empDet{get;set;}
public Boolean selected{get;set;}
public wrapObj(Employee__c emp,boolean check)
{
empDet=emp;
selected=check;
}
}
}
The way I would approach is I would create a custom method and then fetch that list in that method and then I would call that method in 2nd page as apex:page action attribute somethiing like below :
<apex:page controller="customController" action = "{!custommethod}">
public PageReference DisplayDetails() {
selectedwrpList=new List<wrapObj>();
for(wrapObj emp:wrpList)
{
if(emp.selected == true) {
selectedwrpList.add(emp);
}
}
PageReference reRend = new PageReference('/apex/wrapperCustomObjpage2');
reRend.setRedirect(false);
return reRend;
}
Now i am able to display the page2 data correctly . But now , the issue is the url is not changing to wrapperCustomObjpage2.
Change it to true like
reRend.setRedirect(true);
It should change the URL
<apex:page controller="customcontroller" action="{!DisplayDetails}" >
Cyclical server-side forwards detected: /apex/wrapperCustomObjpage2
I am also working on same scenario..are you able to overcome this issue?
Are you able to achieve the output which you were expecting..if so could you please share the code patch..It would be of great help for me, as i am also working on similar task..
Thank you
I am facing this issue-
Sandeep M 1
Sure Vinit_Kumar !
There are two pages lets say page1 and page 2 both were using same controller. In first page i am selecting records from an Object. Now i have to display the selected records in second object. I am able to get the expected logs for the first page but when i click on display button which navigates to next page. The variable are getting reintialized and i am not able to display the selected records in second page
Could you share your code how you were able to resolve will be of great help.
Thank You
this is the trick
PageReference newPAge = page.eStatementPdf;
newPage.getParameters().put('id', value);
newPage.getParameters().put('empNumber', ename);
return newPage;
Page 1 Vf:
<apex:page Controller="eStatementController">
<apex:form >
<apex:pageBlock >
<apex:pageBlockSection title="Bank E-Statement" columns="1">
<apex:inputField value="{!bStatement.Bank_Account__c}"/>
<apex:inputField value="{!bStatement.Start_Date__c}"/>
<apex:inputField value="{!bStatement.End_Date__c}"/>
<apex:inputField value="{!bStatement.Currency__c}"/>
<apex:inputField value="{!bStatement.Organization__c}"/>
<apex:pageBlock >
<apex:pageBlockButtons location="bottom">
<apex:commandButton value="Generate Statement" action="{!generate}" />
</apex:pageBlockButtons>
</apex:pageBlock>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
Page1 controller :
public with sharing class eStatementController {
public String orgname { get; set; }
List<Bank_statement__c> bsList=new List<Bank_statement__c>();
public PageReference generate() {
insert bStatement;
System.debug('state '+bStatement);
List<bank_account__c> ba= [select id,name,employee__r.name,employee__r.Employee_Number__c from bank_account__c where id=:bStatement.bank_account__c];
List<employee__C> emp=[select id,organization__r.name from employee__c where employee_number__c =:ba[0].employee__r.Employee_Number__c];
if((emp[0].organization__r.id==bstatement.organization__c) && (ba[0].id==bStatement.Bank_Account__c))
{
Id value = ba[0].id;
String ename=ba[0].employee__r.Employee_Number__c;
PageReference newPAge = page.eStatementPdf;
newPage.getParameters().put('id', value);
newPage.getParameters().put('empNumber', ename);
return newPage;
}
else
{
return null;
}
}
public Bank_Statement__c bStatement{get;set;}
public eStatementController()
{
bStatement=new Bank_Statement__c();
}
}
Page 2 vf :
<apex:page controller="eStatementPdfController" renderAs="pdf">
<apex:pageBlock >
<apex:pageBlockSection columns="2">
<apex:pageBlockSectionItem >
<apex:outputPanel >
<h2><b>{!empName}</b></h2>
<p>{!orgName}<br/>
{!address}</p>
</apex:outputPanel>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >
<apex:column value="a" headerValue="Account type"/>
<apex:column value="b" headerValue="Balance"/>
<apex:column value="c" headerValue="Currency"/>
</apex:pageBlockTable> -->
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:page>
Page2 Controller :
public with sharing class eStatementPdfController {
public List<bank_statement__c> accountDetails { get; set; }
public String address { get; set; }
public organization__c orgs { get; set; }
public string empname{get;set;}
public string orgname{get;set;}
Public String param_value1{get;set;}
Public String param_value2{get;set;}
List<Employee__c> org=new List<Employee__c>();
List<bank_statement__c> bs=new List<bank_statement__c>();
public eStatementPdfController()
{
accountDetails = new List<bank_statement__c>();
param_value1 = ApexPages.currentPage().getParameters().get('id');
System.debug('p 1 '+param_value1);
param_value2 = ApexPages.currentPage().getParameters().get('empNumber');
System.debug('p 2 '+param_value2);
org=[select id,name,organization__r.name,organization__r.address__c from employee__c where employee_number__c=:param_value2];
orgname=org[0].organization__r.name;
empname=org[0].name;
address=org[0].organization__r.address__c;
}
}
Thank you so much for the quick turnaround..But I am looking for pagination and selected records in first page needs to be displayed in second page...Will this code handle this too..Kindly let me know