Wednesday, 5 November 2014

Add Rows dynamically in VF Page using Wrapper

Wrapper Classes:- --------------------------- <apex:page controller="CreateMultipleContactsController" sidebar="false"> <apex:sectionHeader title="Create multiple" subtitle="Contacts"/> <apex:form id="theForm"> <apex:pageBlock title="Create Contacts"> <apex:pageBlockTable value="{!conWrapper}" var="cw" id="thePageBlockTable"> <apex:column headerValue="UN"> <apex:outputText value="{!cw.UniqueNumber}" style="width:10px;"/> </apex:column> <apex:column headerValue="First Name"> <apex:inputField value="{!cw.con.FirstName}"/> </apex:column> <apex:column headerValue="Last Name"> <apex:inputField value="{!cw.con.LastName}"/> </apex:column> <!--<apex:column headerValue="Account Name"> <apex:inputField value="{!con.AccountId}"/> </apex:column> --> <apex:column headerValue="Phone"> <apex:inputField value="{!cw.con.Phone}"/> </apex:column> <apex:column headerValue="Email"> <apex:inputField value="{!cw.con.Email}"/> </apex:column> <apex:column > <apex:commandButton value="Delete" action="{!deleteRow}" immediate="true" reRender="theForm"> <apex:param name="deleteRowNumber" value="{!cw.UniqueNumber}" assignTo="{!deleteRowNumber}"/> </apex:commandButton> </apex:column> </apex:pageBlockTable> <apex:commandButton value="Add Row" action="{!addRows}" immediate="true" reRender="theForm"> <apex:param name="countNoOfRows" value="1" assignTo="{!countNoOfRows}"/> </apex:commandButton> <apex:commandButton value="Add 5 Rows" action="{!addRows}" immediate="true" reRender="theForm"> <apex:param name="countNoOfRows1" value="5" assignTo="{!countNoOfRows}"/> </apex:commandButton> <apex:pageBlockButtons > <apex:commandButton value="Save" action="{!save}"/> </apex:pageBlockButtons> </apex:pageBlock> </apex:form> </apex:page> Controller:- ------------------ public with sharing class CreateMultipleContactsController { // public List<Contact> conList{set;get;} public List<ContactWrapper> conWrapper{set;get;} public Integer countNoOfRows{set;get;} private Id accId; private Integer uniqueNo=0; public Integer deleteRowNumber{set;get;} /* private Integer countNoOfRows; public void setcountNoOfRows(integer countNoOfRows) { this.countNoOfRows=countNoOfRows; }*/ public CreateMultipleContactsController () { //countNoOfRows=0; accId=ApexPages.currentPage().getParameters().get('accId'); // conList=new List<Contact>(); // conList.add(New Contact(AccountId=accId)); conWrapper=new List<ContactWrapper>(); conWrapper.add(new ContactWrapper(uniqueNo++)); } public void addRows() { System.debug('------------->'+countNoOfRows); // for(Integer i=1;i<=countNoOfRows;i++) // conList.add(New Contact(AccountId=accId)); for(Integer i=1;i<=countNoOfRows;i++) conWrapper.add(New ContactWrapper(uniqueNo++)); } public void deleteRow() { for(integer i=0; i<conWrapper.size();i++) { if(conWrapper[i].UniqueNumber==deleteRowNumber) { conWrapper.remove(i); } } //conWrapper.remove(deleteRowNumber); } public Pagereference save() { List<Contact> contactList=new List<Contact>(); System.debug('---------'+contactList); System.debug('---------'+conWrapper); for(ContactWrapper cw : conWrapper) { System.debug('---------'+cw); contactList.add(cw.Con); } System.debug('---------'+contactList); if(!contactList.isEmpty()) insert contactList; Pagereference p=new Pagereference ('/'+accID); return p; } public class ContactWrapper { Public Integer UniqueNumber{set;get;} public Contact con{set;get;} public ContactWrapper(Integer un) { Id accId=ApexPages.currentPage().getParameters().get('accId'); UniqueNumber=un; con=new Contact(AccountId=accId); } } }

No comments:

Post a Comment