I,m trying to save data into a custom object from a repeated form in visualforce page. This is the visualforce code. Can I do do this using array? or list? or map?.. any idea?..
<apex:form>
<apex:pageMessages />
<div class="details">
<div class="form-horizontal">
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
<apex:variable value="{!1}" var="rowNum"/>
<apex:repeat var="selectedproduct" value="{!selectedproducts}">
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="heading{!selectedproduct.Id}{!rowNum}">
<h5 class="ticket-type">Ticket Type</h5>
<h4 class="panel-title">{!selectedproduct.ProntoEvents_Product_Name__c}</h4>
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse{!selectedproduct.Id}{!rowNum}" aria-expanded="false" aria-controls="collapse{!selectedproduct.Id}{!rowNum}">
<div class="icon-group">
<i class="gear-icon"></i><i class="glyphicon glyphicon-triangle-top"></i><i class="glyphicon glyphicon-triangle-bottom"></i>
</div>
</a>
</div>
<div id="collapse{!selectedproduct.Id}{!rowNum}" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading{!selectedproduct.Id}{!rowNum}">
<div class="panel-body">
<apex:outputPanel rendered="{!selectedproduct.Show_Attendee_Name__c == true}">
<div class="form-group">
<label for="firtname" class="col-sm-4 control-label"><i class="asterisk">*</i> Attendee Name</label>
<div class="col-sm-8">
<apex:inputField value="{!pea.Attendee_Name__c}" styleClass="form-control"/>
</div>
</div>
</apex:outputPanel>
<apex:outputPanel rendered="{!selectedproduct.Show_Email_Address__c == true}">
<div class="form-group">
<label for="emailaddress" class="col-sm-4 control-label"><i class="asterisk">*</i> Email Address</label>
<div class="col-sm-8">
<apex:inputField value="{!pea.Email_Address__c}" styleClass="form-control"/>
</div>
</div>
</apex:outputPanel>
<apex:outputPanel rendered="{!selectedproduct.Show_Title__c == true}">
<div class="form-group">
<label for="confirmemail" class="col-sm-4 control-label"><i class="asterisk">*</i> Title</label>
<div class="col-sm-8">
<apex:inputField value="{!pea.Title__c}" styleClass="form-control"/> </div>
</div>
</apex:outputPanel>
<apex:outputPanel rendered="{!selectedproduct.Show_Company__c == true}">
<div class="form-group">
<label for="confirmemail" class="col-sm-4 control-label"><i class="asterisk">*</i> Company</label>
<div class="col-sm-8">
<apex:inputField value="{!pea.Company__c}" styleClass="form-control"/>
</div>
</div>
</apex:outputPanel>
<apex:outputPanel rendered="{!selectedproduct.Show_Dietary_Requirements__c == true}">
<div class="form-group">
<label for="confirmemail" class="col-sm-4 control-label"><i class="asterisk">*</i> Dietary Req.</label>
<div class="col-sm-8">
<apex:inputField value="{!pea.Dietary_Requirements__c}" styleClass="form-control"/>
</div>
</div>
</apex:outputPanel>
<apex:outputPanel rendered="{!selectedproduct.Show_Comments__c == true}">
<div class="form-group">
<label for="confirmemail" class="col-sm-4 control-label"><i class="asterisk">*</i> Comments</label>
<div class="col-sm-8">
<apex:inputField value="{!pea.Comments__c}" styleClass="form-control"/>
</div>
</div>
</apex:outputPanel>
</div>
</div>
</div>
<apex:variable var="rowNum" value="{!rowNum + 1}"/>
</apex:repeat>
</div>
<div class="form-group">
<label for="confirmemail" class="col-sm-4 control-label"></label>
<div class="col-sm-8">
<apex:commandButton action="{!SaveAttendee}" value="PROCEED" styleClass="btn btn-success btn-proceed"/>
</div>
</div>
</div>
</div>
</apex:form>
But when I debug, it displays only the last data/form values.
DEBUG|ProntoEvents_Attendee__c:{Attendee_Name__c=zzxc, Email_Address__c=zxc@gmail.com, Title__c=zxc, Company__c=zxc, Dietary_Requirements__c=qwe, Comments__c=qwe}
How could I save the the values from multiple form?
This is my apex code.
public List<ProntoEVents_Product__c> getSelectedProducts() {
List<ProntoEvents_Booking_Product__c> bookingproducts;
List<ProntoEvents_Product__c> selectedproducts;
List<ProntoEVents_Product__c> listproducts;
listproducts = [SELECT Name, ProntoEvents_Product_Name__c, Show_Attendee_Name__c, Show_Comments__c, Show_Company__c,Show_Dietary_Requirements__c,Show_Email_Address__c,Show_Title__c FROM ProntoEvents_Product__c Where Id IN('a0T9000000Jple3','a0T9000000JplfL')];
bookingproducts = [SELECT Name, Quantity__c, ProntoEvents_Booking__c, ProntoEvents_Product__c FROM ProntoEvents_Booking_Product__c Where Id IN('a0e9000000Bp7Ug','a0e9000000BpADo')];
selectedproducts = new List<ProntoEVents_Product__c>();
for (Integer i = 0; i < listproducts.size(); i++) {
if(listproducts[i].Id == bookingproducts[i].ProntoEvents_Product__c)
{
for(Integer j=0; j<bookingproducts[i].Quantity__c; j++){
selectedproducts.add(listproducts[i]);
}
}
}
return selectedproducts;
}
This is the visualforce code for the SaveAttendee.
public PageReference SaveAttendee(){
system.Debug(pea);
return null;
}
Initialization of pea
public ProntoEvents_Attendee__c pea{get;set;}
pea
is defined and populated – Rob Jul 24 '15 at 9:25