1

This is my first post .. Please Help me. Problem is i can update my selected data .. but search and filter fields are not working .. Please guide me how can i bind my wrap class with page reference search and filter..

vf page

Apex Controller

public class SController
{
    public List wrapList {get; set;}
    public Boolean selected {get; set;}
    public list Accounts;
    public string finalSearchValue{get;set;}
    public string fullname{get;set;}
    public List Add{get;set;}
    public list search{get;set;}
    public list Remove{get;set;}
    public string value {get;set;}
    public string Option{get;set;}

    public SController()
    {
        Accounts = [select Id, Name, Active__c, Phone from Account];
        if(wrapList == null)
        {
            wrapList = new List();
            for(Account a: Accounts)
            {
                wrapList.add(new wrapData(a));
            }
        }        
    }

    public pagereference AddStatus()
    {
        Add = new List();

        for(wrapData ch : wrapList)
        {
            if(ch.selected == true && ch.ac.Active__c=='No')
            {
                ch.ac.Active__c='Yes';
                Add.add(ch.ac);
            }
        }
        update Add;
        return null;
    }

    public pagereference RemoveStatus()
    {
        Remove = new List();

        for(wrapData ch : wrapList)
        {
            if(ch.selected == true && ch.ac.Active__c=='Yes')
            {
                ch.ac.Active__c='No';
                Remove.add(ch.ac);
            }
        }
        update Remove;
        return null;
    }

    public pagereference Search()
    {
        String finalSearchValue = '%' + fullname + '%';
        Accounts = [Select Id, Name, Active__c
        FROM Account
        where Name like :finalSearchValue];
        return null;
    }

    public List getOptions()
    {
        List Option = new List();
        Option.add(new selectOption('none','None'));
        Option.add(new selectOption('y','Active Accounts'));
        Option.add(new selectOption('n','Inactive Accounts'));
        Option.add(new selectOption('c','All Accounts'));             
        return Option;
    } 

    public void FetchData(string opt)    
    {
        Option = opt;
        if(opt=='y')
        {
            Accounts = [Select Id, Name, Active__c FROM Account where Active__c = 'Yes' ];
        }
        else if(opt=='n')
        {
            Accounts = [Select Id, Name, Active__c FROM Account where Active__c = 'No'];
        }
        else if(opt == 'c' || opt =='none')
        {
            Accounts = [Select Id, Name, Active__c FROM Account];
        } 
    }

    public pagereference Filter()
    {   
        List Option = new List();
        FetchData(value);
        return null;
    }

    public class wrapData
    {
        public Account us {get; set;}
        public Boolean selected {get; set;} 
        public wrapData(Account a)
        {
            ac = a;
            selected = false;
        }
    }
}

 <apex:page controller="SController">
  <script type="text/javascript">  
    function selectAllCheckboxes(ch,receivedInputID)
    {
        var inputCheckBox = document.getElementsByTagName("input");
        for(var i=0; i<inputCheckBox.length; i++)
        {
            if(inputCheckBox[i].id.indexOf(receivedInputID)!=-1)
            {
                inputCheckBox[i].checked = ch.checked;
            }
        }
    }
</script>
<apex:form >
    <apex:pageBlock >
        <apex:pageBlockButtons location="top" >
            <apex:commandButton value="Inactive Account" action="{!RemoveStatus}" />
            <apex:commandButton value="Active Account" action="{!AddStatus}" />
        </apex:pageBlockButtons>             
        <table> <tr> <td> <apex:selectList value="{!Value}" size="1"> 
        <apex:selectOptions value="{!Options}"/> 
        </apex:selectList></td>
        <td><apex:commandButton value="filter" action="{!filter}"/></td>
        <td><apex:inputText value="{!fullname}" html-placeholder="Search" /></td>
        <td><apex:commandButton value="search" action="{!Search}" /></td></tr></table>
        <apex:pageBlockTable value="{!wrapList}" var="Wrap">
            <apex:column >
                <apex:facet name="header">
                <apex:inputCheckbox onclick="selectAllCheckboxes(this,'inputId')"/>
                </apex:facet>
                <apex:inputCheckbox value="{!Wrap.selected}" id="inputId"/>
            </apex:column>
            <apex:column headerValue="Full Name" value="{!Wrap.ac.Name}" />
            <apex:column headerValue="Phone" value="{!Wrap.ac.Phone}" />
            <apex:column headerValue="Status" value="{!Wrap.ac.Active__c}" />
        </apex:pageBlockTable>
    </apex:pageBlock> 
  </apex:form>
</apex:page>

4

I see that the code where you find actual accounts is not returned in wrapper format

    public pagereference Search()
    {
        String finalSearchValue = '%' + fullname + '%';
        Accounts = [Select Id, Name, Active__c FROM Account
                    where Name like :finalSearchValue];
        wraplist = new list<wrapData>();  
        for(Account a: Accounts)
        {
            wrapList.add(new wrapData(a));
        }
       return null;
   }

Same way apply for filter method as well.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.