You need to sign in to do that
Don't have an account?
Nidhi Sharma 17
Refreshing a VF page still should display already entered fields till then for that record
I have a VF page for a survey. I want an intermediate commit action so that the user can save the fields he entered till then and can resume from there itself. But on page refresh i am not able to hold values for that record. Whole of the page gets refreshed and the values previously entered gets flushed for that record.
VF Page
Apex class
Kindly help.
VF Page
<apex:page standardcontroller="Survey__c" extensions="ViewSurveyController" cache="false" sidebar="false" showheader="false"> <style> <apex:outputText value="{!surveyContainerCss}" /> </style> <div id="survey_container"> <apex:form id="theForm" > <apex:outputPanel id="seeSurvey" rendered="{!thankYouRendered == false}" > <apex:outputField value="{!Survey__c.Survey_Header__c}"/> <h1><apex:outputField value="{!Survey__c.Name}" rendered="{!Survey__c.Hide_Survey_Name__c == false}" /></h1> </apex:outputPanel> <apex:pageMessages /> <apex:pageBlock rendered="{!thankYouRendered == false}" > <div id="qList"> <apex:repeat value="{!allQuestions}" var="qPreview" id="aQPreview"> <div id="{!qPreview.id}" > <apex:pageBlock id="pblock"> <h1 class="question"> <span class="questionNumber">{!qPreview.orderNumber}</span> {!qPreview.question} <apex:outputPanel rendered="{!qPreview.required}" styleClass="requiredText"> ({!$Label.LABS_SF_Required}) </apex:outputPanel> </h1> <div id="radio"> <apex:selectRadio layout="pageDirection" rendered="{!qPreview.renderSelectRadio}" value="{!qPreview.selectedOption}" > <apex:selectOptions value="{!qPreview.singleOptions}"/> </apex:selectRadio> </div> <div id="checkbox"> <apex:selectCheckboxes layout="pageDirection" rendered="{!qPreview.renderSelectCheckboxes}" value="{!qPreview.selectedOptions}" > <apex:selectOptions value="{!qPreview.multiOptions}"/> </apex:selectCheckboxes> </div> <div id="text"> <apex:inputTextArea cols="50" rows="10" rendered="{!qPreview.renderFreeText}" value="{!qPreview.choices}"/> </div> <div id="row"> <apex:selectRadio rendered="{!qPreview.renderSelectRow}" value="{!qPreview.selectedOption}"> <apex:selectOptions value="{!qPreview.rowOptions}"/> </apex:selectRadio> </div> </apex:pageBlock> </div> <!-- qPreview.id --> </apex:repeat> </div> <!-- qList --> </apex:pageBlock> <apex:outputPanel rendered="{!thankYouRendered == false}"> <apex:outputPanel rendered="{!isInternal}" > {!$Label.LABS_SF_Answer_as}: <apex:selectRadio value="{!anonymousAnswer}"> <apex:selectOptions value="{!anonymousOrUser}" /> <apex:actionSupport event="onchange" rerender="hiddenAnonymousAnswer"/> </apex:selectRadio> <apex:inputHidden value="{!anonymousAnswer}" id="hiddenAnonymousAnswer"/> <BR /> </apex:outputPanel> <apex:commandButton action="{!submitResults}" value="{!$Label.LABS_SF_SubmitSurvey}" rerender="theForm,seeSurvey" /> <apex:commandButton action="{!submit}" value="Commit"/> <!-- New button that i want to have on page --> </apex:outputPanel> <apex:outputPanel rendered="{!thankYouRendered == true}"> <apex:outputText value="{!surveyThankYouText}" escape="false" /> </apex:outputPanel> </apex:form> </div> </apex:page>
Apex class
public void submitResults() { List <SurveyQuestionResponse__c> sqrList = new List<SurveyQuestionResponse__c>(); for (question q : allQuestions) { SurveyQuestionResponse__c sqr = new SurveyQuestionResponse__c(); if (q.renderSelectRadio == 'true') { if (q.required && (q.selectedOption == null || q.selectedOption == '')) { Apexpages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'Please fill out all required fields')); return; } if (q.selectedOption == null || q.selectedOption == '') { sqr.Response__c = ''; } else { sqr.Response__c = q.singleOptions.get(Integer.valueOf(q.selectedOption)).getLabel(); } sqr.Survey_Question__c = q.Id; sqrList.add(sqr); } else if (q.renderFreeText == 'true') { if (q.required && q.choices == '') { Apexpages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'Please fill out all required fields')); return; } System.debug('*****Select Radio ' + q.choices); sqr.Response__c = q.choices; sqr.Survey_Question__c = q.Id; sqrList.add(sqr); } else if (q.renderSelectCheckboxes == 'true') { if (q.required && (q.selectedOptions == null || q.selectedOptions.size() == 0)) { Apexpages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'Please fill out all required fields')); return; } for (String opt : q.selectedOptions) { sqr = new SurveyQuestionResponse__c(); if (opt == '' || opt == null) { sqr.Response__c = ''; } else { sqr.Response__c = q.multiOptions.get(Integer.valueOf(opt)).getLabel(); } sqr.Survey_Question__c = q.Id; sqrList.add(sqr); } } else if (q.renderSelectRow == 'true') { if (q.required && (q.selectedOption == null || q.selectedOption == '')) { Apexpages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'Please fill out all required fields')); return; } if (q.selectedOption == null || q.selectedOption == '') { sqr.Response__c = ''; } else { sqr.Response__c = q.rowOptions.get(Integer.valueOf(q.selectedOption)).getLabel(); } sqr.Survey_Question__c = q.Id; sqrList.add(sqr); } } if(AddSurveyTaker()) { for (SurveyQuestionResponse__c sqr : sqrList) { sqr.SurveyTaker__c = surveyTakerId; } insert sqrList; thankYouRendered=true; } } private Boolean AddSurveyTaker() { String userId; if (surveyId == null) { return false; } if(caseId.toUpperCase() =='NONE'|| caseId.length()<5) caseId = null; if(contactId.toUpperCase() =='NONE'|| contactId.length()<5) contactId = null; if (anonymousAnswer != 'Anonymous') { userId = UserInfo.getUserId(); } else { userId = null; } if(anonymousAnswer != 'Anonymous' && (contactId != null || caseId != null)) { List<SurveyTaker__c> check = [Select Contact__c, Survey__c, Case__c, User__c From SurveyTaker__c Where Contact__c=:contactId and Survey__c=:surveyId and Case__c = :caseId and User__c=:UserId]; if(check != null && check.size()>0){ Apexpages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, System.Label.LABS_SF_You_have_already_taken_this_survey)); return false; } } SurveyTaker__c st = new SurveyTaker__c(); st.Order__c= OrderId; st.Survey__c = surveyId; st.User__c = userId; insert st; surveyTakerId = st.Id; return true; } }
Kindly help.
Try this
And in your page tag give attribute id as id="pgId"