You need to sign in to do that
Don't have an account?
David Roberts 4
Command not updating fields on visualforce page
I have a custom object for territories holding postcode and manager of that area.
I want to search for a postcode/zip match and update the page with the result.
I'm using a command button to initiate the search.
My search is returning the correct result but not refreshing the other fields.
I guess I'm not using rerender correctly but can't get it to work.
Please help.
Here's the code:
<apex:page controller="TerritoryController" tabstyle="Territory__c">
<apex:form >
<apex:pageBlock title="Area Representative Lookup" id="theBlock">
<apex:pageBlockSection columns="1" id="theSection">
<apex:outputText value="{!Area}"/>
<apex:outputText value="{!Name}"/>
<apex:outputText value="{!Manager}"/>
<apex:outputText value="{!Postcode}"/>
<apex:pageBlockSectionItem >
<apex:outputLabel value="search by postcode" for="searchText" />
<apex:inputText value="{!searchText}" id="SearchText"/>
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
<apex:pageBlockButtons >
<apex:commandButton action="{!lookup}" value="Lookup" rerender="theSection"/>
</apex:pageBlockButtons>
<!-- rerender="theBlock" immediate="true" -->
</apex:pageBlock>
</apex:form>
</apex:page>
public class TerritoryController {
// Called by apex page:
// ...salesforce.com/apex/vwAreaRepLookup
public List<Territory__c> myTerList;
public string name;
public string postcode;
public string area;
public string manager;
public string searchText;
//constructor
public TerritoryController() {
searchText = '';
}
public List<Territory__c> getmyTerList() {
system.debug('in getmyTerList searchText=>'+searchText+'<');
ApexPages.Message msgErr;
ApexPages.Message msgInfo;
String err = 'Hello';
String info = 'Hi!';
//example error post
//err='whatever';
//msgErr = new ApexPages.Message(ApexPages.Severity.ERROR, err);
//ApexPages.addmessage(msgErr);
//example info post
//info = 'searchtext=>'+searchText+'<';
//msgInfo = new ApexPages.Message(ApexPages.Severity.INFO, info);
//ApexPages.addmessage(msgErr);
Territory__c[] myTerList = [Select territory__c.area__c, territory__c.postcode__c, territory__c.name, territory__c.territory_manager__c from Territory__c where postcode__c = :searchText ];
return myTerList;
}//getMyRetLicList
public String getManager() {
return 'nothing';
}
public String getArea() {
return 'nothing';
}
public String getName() {
return 'nothing';
}
public String getPostcode() {
system.debug('in get postcode');
return 'nothing';
}
public String getSearchText() {
return 'MK';
}
public void setSearchText(String theSearchText) {
searchText = theSearchText;
}
public void lookup() {
system.debug('in lookup searchText=>'+searchText+'<');
Territory__c result = [Select territory__c.area__c, territory__c.postcode__c, territory__c.name, territory__c.territory_manager__c from Territory__c where postcode__c = :searchText limit 1];
name = result.name;
postcode = result.postcode__c;
area = result.area__c;
manager = result.territory_manager__c;
system.debug('name: '+name);
}//Lookup
}//TerritoryController
I want to search for a postcode/zip match and update the page with the result.
I'm using a command button to initiate the search.
My search is returning the correct result but not refreshing the other fields.
I guess I'm not using rerender correctly but can't get it to work.
Please help.
Here's the code:
<apex:page controller="TerritoryController" tabstyle="Territory__c">
<apex:form >
<apex:pageBlock title="Area Representative Lookup" id="theBlock">
<apex:pageBlockSection columns="1" id="theSection">
<apex:outputText value="{!Area}"/>
<apex:outputText value="{!Name}"/>
<apex:outputText value="{!Manager}"/>
<apex:outputText value="{!Postcode}"/>
<apex:pageBlockSectionItem >
<apex:outputLabel value="search by postcode" for="searchText" />
<apex:inputText value="{!searchText}" id="SearchText"/>
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
<apex:pageBlockButtons >
<apex:commandButton action="{!lookup}" value="Lookup" rerender="theSection"/>
</apex:pageBlockButtons>
<!-- rerender="theBlock" immediate="true" -->
</apex:pageBlock>
</apex:form>
</apex:page>
public class TerritoryController {
// Called by apex page:
// ...salesforce.com/apex/vwAreaRepLookup
public List<Territory__c> myTerList;
public string name;
public string postcode;
public string area;
public string manager;
public string searchText;
//constructor
public TerritoryController() {
searchText = '';
}
public List<Territory__c> getmyTerList() {
system.debug('in getmyTerList searchText=>'+searchText+'<');
ApexPages.Message msgErr;
ApexPages.Message msgInfo;
String err = 'Hello';
String info = 'Hi!';
//example error post
//err='whatever';
//msgErr = new ApexPages.Message(ApexPages.Severity.ERROR, err);
//ApexPages.addmessage(msgErr);
//example info post
//info = 'searchtext=>'+searchText+'<';
//msgInfo = new ApexPages.Message(ApexPages.Severity.INFO, info);
//ApexPages.addmessage(msgErr);
Territory__c[] myTerList = [Select territory__c.area__c, territory__c.postcode__c, territory__c.name, territory__c.territory_manager__c from Territory__c where postcode__c = :searchText ];
return myTerList;
}//getMyRetLicList
public String getManager() {
return 'nothing';
}
public String getArea() {
return 'nothing';
}
public String getName() {
return 'nothing';
}
public String getPostcode() {
system.debug('in get postcode');
return 'nothing';
}
public String getSearchText() {
return 'MK';
}
public void setSearchText(String theSearchText) {
searchText = theSearchText;
}
public void lookup() {
system.debug('in lookup searchText=>'+searchText+'<');
Territory__c result = [Select territory__c.area__c, territory__c.postcode__c, territory__c.name, territory__c.territory_manager__c from Territory__c where postcode__c = :searchText limit 1];
name = result.name;
postcode = result.postcode__c;
area = result.area__c;
manager = result.territory_manager__c;
system.debug('name: '+name);
}//Lookup
}//TerritoryController
Anyway, in case it is of use to anyone, here is my code:-
<apex:page controller="TerritoryController" >
<apex:form id="theForm">
<apex:pageBlock title="Area Representative Lookup" id="theBlock">
<apex:pageBlockSection columns="1" id="theSection">
<apex:pageBlockSectionItem >
<apex:outputLabel value="Area: "/>
<apex:outputText value="{!area}"/>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >
<apex:outputLabel value="Name: "/>
<apex:outputText value="{!name}"/>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >
<apex:outputLabel value="Manager: "/>
<apex:outputText value="{!manager}"/>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >
<apex:outputLabel value="Postcode: "/>
<apex:outputText value="{!postcode}"/>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >
<apex:outputLabel value="search by postcode" for="searchText" />
<apex:inputText value="{!searchText}" id="SearchText"/>
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
<apex:pageBlockButtons >
<apex:commandButton action="{!lookup}" value="Lookup" />
</apex:pageBlockButtons>
</apex:pageBlock>
</apex:form>
</apex:page>
public class TerritoryController {
// Called by apex page:
// ...salesforce.com/apex/vwAreaRepLookup
public string name;
public string postcode;
public string area;
public string manager;
public string searchText;
//constructor
public TerritoryController() {
searchText = '';
}
public String getManager() {
return manager;
}
public String getArea() {
return area;
}
public String getName() {
return name;
}
public String getPostcode() {
system.debug('in get postcode');
return postcode;
}
public String getSearchText() {
return searchText;
}
//required else considered read only
public void setSearchText(String theSearchText) {
searchText = theSearchText;
}
public void lookup() {
List<Territory__c> lstTerritories = new List<Territory__c>();
String AccntName;
lstTerritories = [SELECT territory__c.area__c, territory__c.postcode__c, territory__c.name, territory__c.territory_manager__c, territory__c.territory_manager__r.name FROM Territory__c WHERE postcode__c = :searchText limit 1];
System.debug('size = '+lstTerritories.Size()) ;
if (lstTerritories.Size()>0) {
name = lstTerritories[0].name;
postcode = lstTerritories[0].postcode__c;
area = lstTerritories[0].area__c;
manager = lstTerritories[0].territory_manager__r.name;
}
else {
name = '';
postcode = 'unrecognised postcode';
area = '';
manager = '';
}
}//Lookup
}//TerritoryController
/**
* This class contains unit tests for validating the behavior of Apex classes
* and triggers.
*
*/
@isTest(SeeAllData=true)
private class vwAreaRepLookupTest {
static testMethod void myUnitTest() {
// TO DO: implement unit test
PageReference pageRef = Page.vwAreaRepLookup;
Test.setCurrentPage(pageRef);
TerritoryController theCont = new TerritoryController();
theCont.setSearchText('MK');
theCont.Lookup();
string man = theCont.getManager();
string area = theCont.getArea();
string name = theCont.getName();
string zip = theCont.getPostcode();
string st = theCont.getSearchText();
theCont.setSearchText('YY');
theCont.Lookup();
}
}