I am using Page block table on visual force page and each row has radio buttons , i want to pass the value of each selected radio button , from each row on visual force page to apex Controller class.
For Now i am getting only one Value of last Row , I need Each Value of selected radio Buttons.
Visual Force Page
<apex:pageBlockTable value="{!SurveyQuestions}" var="sq">
<apex:column value="{!sq.Id}"/>
<apex:column value="{!sq.Name}"/>
<apex:column value="{!sq.QuestionID__r.Question__c}"/>
<apex:column value="{!sq.QuestionID__r.Id}" headerValue="Question ID"/>
<apex:column headerValue="HiddenQuestion Id">
<apex:inputHidden value="{!sq.QuestionID__r.Id}" id="HdnQuestionID"/>
</apex:column>
<apex:column headerValue="Question options">
<apex:selectRadio value="{!selectedAnswer}">
<apex:selectOptions value="{!items}"/>
</apex:selectRadio>
</apex:column>
</apex:pageBlockTable>
Apex Controller Class
public List<SelectOption> getItems() {
List<SelectOption> options = new List<SelectOption>();
options.add(new SelectOption('yes','Yes'));
options.add(new SelectOption('no','No'));
options.add(new SelectOption('Maybe','maybe'));
return options;
}
public PageReference SubmitSurvey() {
// Multiple Checkbox value Logic Goes Here
if(selectedAnswer == 'yes'){
//Inserting The Survey Result
tblSurveyResult__c SurveyResult = new tblSurveyResult__c(
Name = selectedAnswer,
Answer__c = 1
);
insert SurveyResult;
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'Survey Submitted Successfully'));
} else if (selectedAnswer == 'no'){
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,selectedAnswer));
} else {
ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'Please Select Atleast one value'));
}
return null;
}
Best Answer
You can use wrapper class here. This is the best option in your use case. I am adding some sample code taken from Salesforce docs.
Visual force
Now use this code as reference you will get all selected value in your code. You can replace the checkbox with inputradio. and it will solve your problem.