1

In my Visual force page I am showing all the cases related to a contact. I use a search function to populate the value of cases in a List of a wrapper class. I am mimicking from this link->https://developer.salesforce.com/page/Wrapper_Class

Here is my wrapper class:

 public class cContact{

    public Case con{get;set;}
    public Boolean selected{get;set;}

    public cContact(Case c){
        con=c;
        selected=true;

    }

 }

My logic in controller extension:

public List<cContact> contactList {get; set;}

 public Pagereference search() {

if(contactList == null){
  contactList = new List<cContact>();
     for(Case c: [Select Id, CaseNumber, Status, Subject from Case where contact.Name = : first + ' ' + last]) {
        // As each contact is processed we create a new cContact object and add it to the contactList
        contactList.add(new cContact(c));
     }
   }
  return null;
 }

My logic in VF page to display radio button selection for each row in PageBlockTable:

<apex:pageblockTable value="{!contactList}" var="c" id="caselist">
                    <apex:column >
                    <!-- This is our selected Boolean property in our wrapper class -->
                    <apex:selectRadio value="{!c.selected}"/>
                </apex:column>
                <apex:column value="{!c.con.Id}" />
                <apex:column value="{!c.con.CaseNumber}" />
                <apex:column value="{!c.con.Status}" />
            </apex:pageblockTable>

I can see the radio button , but it seems like all the radio button are independent of each other, meaning- I can select all the radio button at a time ( I should only be able to select one at time!). How can I correct this?

enter image description here

6
  • hmm.. then One I idea I want to suggest.. onclick of checkbox call a method in controller and assign current record Id to any variable. After that in that called method iterate over all the wrapper list and check the assigned record Id. If matched then that wrapper boolean make true and all other wrapper boolean make false..
    – Ratan Paul
    Commented Apr 18, 2016 at 5:56
  • or on click call Javascript method where get all other radio button and make them false. Commented Apr 18, 2016 at 6:03
  • @sfdcweb I guess Onclick I can only call a javaScript method, is that correct? When I tried to have a method like public void selectedRadio(){ } in my extension and use <apex:selectRadio value="{!c.selected}" onclick="{!selectedRadio}"/> there was an error-Unknown property 'ContactStandardController.selectedRadio'
    – SfdcBat
    Commented Apr 18, 2016 at 6:06
  • 1
    Try html <apex:column headervalue="Cases"> <input type="radio" name="group" id="{!exscases.Id}" /> </apex:column> Commented Apr 18, 2016 at 6:17
  • 1
    [check this] (salesforce.stackexchange.com/questions/9924/…) Commented Apr 18, 2016 at 6:28

1 Answer 1

3

You have List with one radiobutton element for each record. Try to use html :

<apex:pageBlockTable value="{!account.Cases}" var="exscases">

<apex:column headervalue="Cases">
    <input type="radio" name="group" id="{!exscases.Id}" />
</apex:column>
2
  • Hello , now the radio button works as it should work, but now how do I pass the value of selected radio button back to my extension?
    – SfdcBat
    Commented Apr 18, 2016 at 6:26
  • Thanks for the input. I used the above approach and it worked. I would like to add how I did it. I just had <input type="radio" name="group" value="{!exscases.Id}" /> and in my controller I had a String radioValue{get;set;}. I used radioValue = apexpages.currentpage().getparameters().get('group'); to get the value of the selected radio button. Having value variable in <input type="radio"...> was important for this approach.
    – SfdcBat
    Commented Apr 18, 2016 at 6:54

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .