<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5388715879708847968</id><updated>2012-02-13T07:46:50.808-08:00</updated><category term='nested table'/><category term='embed chatter'/><category term='attachment'/><category term='visualforce issue'/><category term='visualforce in homepage'/><category term='one to one'/><category term='apex'/><category term='insufficient_access_on_cross_reference_entity'/><category term='parial refresh'/><category term='visualforce nested query'/><category term='upload multiple files'/><category term='Simulator issue'/><category term='expand/collapse'/><category term='rerender rich  text field'/><category term='mass email example'/><category term='poll'/><category term='force.com sites'/><category term='dynamic picklist'/><category term='1:1'/><category term='salesforce'/><category term='MAX'/><category term='visualforce guide'/><category term='WSDL'/><category term='upload file'/><category term='duplicate'/><category term='mass assign child records'/><category term='homepage component'/><category term='select multiple records'/><category term='Spring&apos;10'/><category term='Approval process'/><category term='radiobutton'/><category term='salesforce limitations'/><category term='visualforce edit'/><category term='developer challenge'/><category term='Salesforce style'/><category term='salesforce issue'/><category term='Jquery'/><category term='csv'/><category term='test methods'/><category term='rerender'/><category term='newbie visualforce'/><category term='VF dashboards'/><category term='actionstatus'/><category term='event and calendar limitations'/><category term='HTTP callout'/><category term='salesforce help'/><category term='text animations'/><category term='apex test coverage'/><category term='unique'/><category term='salesforce sample code'/><category term='CSS'/><category term='java'/><category term='salesforce relationship'/><category term='iSalesforce'/><category term='webservices'/><category term='email template'/><category term='__c'/><category term='visualforce styling'/><category term='hierarchy'/><category term='parameters'/><category term='salesforce integration'/><category term='quick guide'/><category term='dashboard'/><category term='Salesforce.com new UI'/><category term='salesforce avoid duplicates'/><category term='visualforce'/><category term='sfdc'/><category term='igoogle for salesforce'/><category term='visualforce pass parameters'/><category term='visualforce example'/><category term='override button'/><category term='document upload'/><category term='visualforce help'/><category term='visualforce page'/><category term='upload'/><category term='chatter'/><category term='dynamic soql'/><category term='look-up'/><category term='__r'/><category term='Visualforce UI issue'/><category term='wrapper class'/><category term='actionsupport'/><category term='tree'/><category term='visualforce nested table'/><category term='record lock'/><category term='Visualforce email template'/><category term='salesforce test method'/><category term='email from apex'/><title type='text'>ForceTree.com</title><subtitle type='html'>Visualforce code samples and the salesforce.com magic</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.forcetree.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>69</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-405696748143667273</id><published>2012-02-09T15:35:00.000-08:00</published><updated>2012-02-09T15:38:39.239-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VF dashboards'/><title type='text'>Advanced reporting and Dashboards in Salesforce: Google Visualization with Visualforce</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;If you haven't yet tried your hand with Google Visualization API's this is the best time to start...&lt;br /&gt;&lt;br /&gt;Here is the link to the documentation to get started .. &lt;a href="http://code.google.com/apis/chart/interactive/docs/reference.html"&gt;http://code.google.com/apis/chart/interactive/docs/reference.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A very cool feature of this is you could generate charts just by passing parameters in the URL. &lt;br /&gt;&lt;br /&gt;It's as simple as this, click the link &lt;a href="https://chart.googleapis.com/chart?cht=p3&amp;amp;chs=450x100&amp;amp;chd=t:30,20,20,15,15&amp;amp;chl=Open%7CIn%20Progress%7COn%20Hold%7CPending%20Confirmation%7CClosed"&gt;&lt;span style="color: #444444;"&gt;https://chart.googleapis.com/chart?cht=p3&amp;amp;chs=450x100&amp;amp;chd=t&lt;span style="color: magenta;"&gt;:&lt;b&gt;30,20,20,15,15&lt;/b&gt;&lt;/span&gt;&amp;amp;chl=&lt;b&gt;&lt;span style="color: #274e13;"&gt;Open|In Progress|On Hold|Pending Confirmation|Closed&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;&lt;span style="color: black;"&gt;As you can see, the values in PINK color are the actual segments of the chart. You may split the entire 100% as per your req, and the text in GREEN is the value for each of the segments.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;iframe frameborder="0" src="https://chart.googleapis.com/chart?cht=p3&amp;amp;chs=450x100&amp;amp;chd=t:30,20,20,15,15&amp;amp;chl=Open%7CIn%20Progress%7COn%20Hold%7CPending%20Confirmation%7CClosed" style="height: 150px; width: 500px;"&gt;&amp;amp;lt;p&amp;amp;gt;&amp;amp;amp;amp;amp;amp;lt;p&amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;br /&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;amp;amp;gt;&amp;amp;lt;/p&amp;amp;gt;&lt;/iframe&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: orange;"&gt;&lt;span style="color: black;"&gt;How can i use this?&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;&lt;span style="color: black;"&gt;Well, you could just embed this into a Standard Page Layout using just a formula field. So, you get a real time snapshot right inside your detail page.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;&lt;span style="color: black;"&gt;Also, you could do some complex calculations in your apex class and pass the results of the calculation to the URL as parameters and you have a nice little graph.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: orange;"&gt;&lt;span style="color: black;"&gt;Refer to the documentation for more samples and chart types. &lt;/span&gt;&lt;/span&gt;&lt;a href="http://code.google.com/apis/chart/interactive/docs/reference.html"&gt;http://code.google.com/apis/chart/interactive/docs/reference.html&lt;/a&gt;&lt;span style="color: orange;"&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-405696748143667273?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/405696748143667273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2012/02/advanced-reporting-and-dashboards-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/405696748143667273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/405696748143667273'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2012/02/advanced-reporting-and-dashboards-in.html' title='Advanced reporting and Dashboards in Salesforce: Google Visualization with Visualforce'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-7797680129260299029</id><published>2012-02-08T16:45:00.000-08:00</published><updated>2012-02-08T16:52:49.517-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MAX'/><title type='text'>Salesforce List (Array) :How to Find the MAX value in a list</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This is just a way that i followed, not sure if LIST's have a pre-defined function to find out the maximum... If you do find a easier way, share it in the comments box below.&lt;br /&gt;&lt;br /&gt;Here, "samplevalues" is a LIST of Decimal's&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;List&amp;lt;Decimal&amp;gt; samplevalues = new List&amp;lt;Decimal&amp;gt;();&lt;br /&gt;samplevalues.add(55.0);&lt;br /&gt;samplevalues.add(75.5);&lt;br /&gt;samplevalues.add(99.3);&lt;br /&gt;Decimal maxvalue = samplevalues[0];&lt;br /&gt;        For (integer i =0;i&amp;lt;samplevalues.size();i++)&lt;br /&gt;        {&lt;br /&gt;            &lt;br /&gt;            if( samplevalues[i] &amp;gt; maxvalue)&lt;br /&gt;                maxvalue = samplevalues[i];             &lt;br /&gt;        }    &lt;br /&gt;system.debug('the max value is'+maxvalue);  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-7797680129260299029?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/7797680129260299029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2012/02/salesforce-list-array-how-to-find-max.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7797680129260299029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7797680129260299029'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2012/02/salesforce-list-array-how-to-find-max.html' title='Salesforce List (Array) :How to Find the MAX value in a list'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-7849918503217490988</id><published>2012-01-24T11:27:00.000-08:00</published><updated>2012-01-24T11:27:35.908-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csv'/><category scheme='http://www.blogger.com/atom/ns#' term='upload'/><title type='text'>Upload Contacts from CSV file in a Visualforce Page - Source: Ranjeet Singh</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Many thanks to Mr.Ranjeet Singh for submitting this article. This article is a sample code which lets you upload contacts from a Visualforce Page using a CSV file...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://edwinvijay-developer-edition.na5.force.com/apex/SFUnearthed_NewArticle" target="_blank"&gt;Click here&lt;/a&gt; if you too would like to submit an article for this blog&lt;br /&gt;&lt;br /&gt;Step 1:&lt;br /&gt;&lt;br /&gt;&lt;span id="j_id0:j_id6:articlespace"&gt;&lt;div&gt;1) Create the Apex Class:&amp;nbsp;UploadRecordUsingCSVContact&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span id="ApexClassViewPage:theTemplate:theForm:thePageBlock:j_id56:j_id57:j_id58"&gt;&lt;pre class="codeBlock"&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;public with sharing class UploadRecordUsingCSVContact {&lt;br /&gt;    &lt;br /&gt;    public Blob FileRecords{get;set;}&lt;br /&gt;    String[] LineNo=new String[]{};&lt;br /&gt;    List&amp;lt;Contact&amp;gt; AllContact;&lt;br /&gt;    Public Pagereference UploadFile()&lt;br /&gt;     {&lt;br /&gt;       String FileData=FileRecords.toString();&lt;br /&gt;       LineNo=FileData.split('\n');&lt;br /&gt;       Allcontact=new List&amp;lt;Contact&amp;gt;();&lt;br /&gt;       for(Integer i=1;i&amp;lt;LineNo.size();i++)&lt;br /&gt;        {&lt;br /&gt;          Contact con=new Contact();&lt;br /&gt;          String[] ActualData=new String[]{};&lt;br /&gt;          ActualData=LineNo[i].split(',');&lt;br /&gt;          con.FirstName=ActualData[0];&lt;br /&gt;          con.LastName=ActualData[1];&lt;br /&gt;          con.Email=ActualData[2];&lt;br /&gt;          con.Phone=ActualData[3];&lt;br /&gt;          Allcontact.add(con);&lt;br /&gt;        }&lt;br /&gt;       try&lt;br /&gt;       {&lt;br /&gt;         insert Allcontact;&lt;br /&gt;       } &lt;br /&gt;       catch(Exception e) &lt;br /&gt;        {&lt;br /&gt;        &lt;br /&gt;        }&lt;br /&gt;       return Null;&lt;br /&gt;     }&amp;nbsp; &lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Step 2:&lt;span id="j_id0:j_id6:articlespace"&gt;&lt;span style="font-family: Calibri,sans-serif; font-size: 11pt; line-height: 115%;"&gt; Create VF Page:&amp;nbsp;&lt;/span&gt;UploadRecordUsingCSVContact&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page controller="UploadRecordUsingCSVContact" &amp;gt;&lt;br /&gt; &amp;lt;apex:form &amp;gt;&lt;br /&gt;  &amp;lt;apex:sectionHeader title="Upload Contact Records uing CSV File"/&amp;gt;&lt;br /&gt;  &amp;lt;apex:pageblock &amp;gt;&lt;br /&gt;    &amp;lt;Center&amp;gt;&lt;br /&gt;        &amp;lt;apex:inputfile value="{!FileRecords}"&amp;gt;&amp;lt;/apex:inputfile&amp;gt;&amp;lt;apex:commandButton value="Upload File" action="{!UploadFile}"/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;        &amp;lt;font color="Red"&amp;gt;&amp;lt;b&amp;gt;Note:&amp;amp;nbsp;&amp;lt;a href="{!$Resource.ContactUploadTemplate}" target="__blank"&amp;gt;Click Here &amp;lt;/a&amp;gt;To download the Format.&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;    &amp;lt;/Center&amp;gt;&lt;br /&gt;  &amp;lt;/apex:pageblock&amp;gt; &lt;br /&gt; &amp;lt;/apex:form&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Step 3:&amp;nbsp; Create a CSV File and the file must be in the following mentioned Format:&lt;br /&gt;&lt;table border="1" cellspacing="3"&gt;&lt;tr&gt; &lt;td&gt; First Name &lt;/td&gt; &lt;td&gt; Last Name &lt;/td&gt; &lt;td&gt; Email &lt;/td&gt; &lt;td&gt; Phone &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt; Ranjeet &lt;/td&gt; &lt;td&gt; Singh &lt;/td&gt; &lt;td&gt; xxxxx@gmail.com &lt;/td&gt; &lt;td&gt; xxxxxxx &lt;/td&gt; &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-7849918503217490988?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/7849918503217490988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2012/01/upload-contacts-from-csv-file-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7849918503217490988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7849918503217490988'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2012/01/upload-contacts-from-csv-file-in.html' title='Upload Contacts from CSV file in a Visualforce Page - Source: Ranjeet Singh'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-832342610057783941</id><published>2011-12-17T20:49:00.000-08:00</published><updated>2011-12-17T20:49:57.420-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='salesforce integration'/><category scheme='http://www.blogger.com/atom/ns#' term='webservices'/><title type='text'>JAVA to Salesforce.com Integration using webservices - Easy implementation Guide</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-size: large;"&gt;I wanted to do this for a long time, but the complexity involved in the process made me lazy. I finally went through the process and successfully wrote a small java program to connect to salesforce.com and fetch the contacts.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;I had to browse through multiple articles to troubleshoot and understand issues, which was a bit frustrating at times. So, i put together all the steps for you in a presentation.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;If you are new to webservices and JAVA, you may want to try this out. This should approximately take a few hours for you to complete.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;You can view the slideshare presentation here. You may also download it and use, please make sure you acknowledge forcetree.com when you re-distribute.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="__ss_10626678" style="width: 425px;"&gt;&lt;b style="display: block; margin: 12px 0pt 4px;"&gt;&lt;a href="http://www.slideshare.net/EdwinVijayR/forcetreecom-writing-a-java-program-to-connect-to-sfdc" target="_blank" title="Forcetree.com writing a java program to connect to sfdc"&gt;Forcetree.com writing a java program to connect to sfdc&lt;/a&gt;&lt;/b&gt; &lt;iframe frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/10626678" width="425"&gt;&lt;/iframe&gt; &lt;br /&gt;&lt;div style="padding: 5px 0pt 12px;"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/EdwinVijayR" target="_blank"&gt;Edwin Vijay R&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;You can also download the entire presentation including the embedded videos here.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.screencast.com/users/EdwinVijay/folders/Default/media/4b26e0a9-0546-44d5-ae81-a57403aaf35d" style="color: #e69138;" target="_blank"&gt;&lt;span style="font-size: large;"&gt;Download entire presentation &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-832342610057783941?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/832342610057783941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/12/java-to-salesforcecom-integration-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/832342610057783941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/832342610057783941'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/12/java-to-salesforcecom-integration-using.html' title='JAVA to Salesforce.com Integration using webservices - Easy implementation Guide'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-5691997554920558022</id><published>2011-12-09T16:23:00.000-08:00</published><updated>2011-12-12T09:42:14.945-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='insufficient_access_on_cross_reference_entity'/><title type='text'>insufficient_access_on_cross_reference_entity APEX / Salesforce</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="color: black; font-size: 10pt;"&gt;Even though i understood what this means and have dealt with it earlier, this time this error message sucked my brain for one week. Finally, i got it sorted out and i hope this post helps someone understand and solve as well.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;b&gt;&lt;span style="color: blue; font-size: 10pt;"&gt;When does this error happen?&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="color: black; font-size: 10pt;"&gt;This error normally happens when a DML operation is performed. Meaning that, whenever an Insert or Update is performed. You won't see this error when you save your APEX class or TRIGGER, because this error happens at RUNTIME.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;b&gt;&lt;span style="color: blue; font-size: 10pt;"&gt;What does this error mean?&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="color: black; font-size: 10pt;"&gt;This error means that you are trying to do an operation which is not supposed to be done, or the operation you are about to perform is not permitted according to the Sharing and Security settings defined. This error message does NOT always mean that you lack access to do the operation, even though it might be the case sometimes. So, even if you are an ADMINISTRATOR you may get this message.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;b&gt;&lt;span style="color: black; font-size: 10pt;"&gt;Possible Causes:&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;b&gt;&lt;span style="color: black; font-size: 10pt;"&gt;Let's take some scenario's and analyze.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;b&gt;&lt;span style="color: black; font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: blue; font-size: 10pt;"&gt;Scenario 1: &amp;nbsp;Creating a new record (Account/Contact/...) and setting the Owner. Applies to updating records as well.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="color: black; font-size: 10pt;"&gt;So, in your code you create some records. By Default the creator of the record is the Owner. You want to change this and you modify the OwnerId column of the newly created records. You make "User X" as the Owner. Now when you run the code, you get the Error below:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;b&gt;&lt;span style="color: red; font-size: 10pt;"&gt;System.DmlException: Insert failed. First exception on row 2; first error: INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY,&amp;nbsp;insufficient access rights on cross-reference id: []&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;b&gt;&lt;span style="color: black; font-size: 10pt;"&gt;Things to check:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="color: black; font-size: 10pt;"&gt;&amp;nbsp; *Check that the running user (in this case you) has access to the object being operated. Check that he has CREATE privileges on the object. This is optional, but is always better to start from here.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="color: black; font-size: 10pt;"&gt;&amp;nbsp; *Check that the Owner ie User X has CREATE permission on the object. Check that his profile has the CREATE permission on the particular object. He might not be having it, grant him permission and the issue is resolved.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;b&gt;&lt;span style="color: blue; font-size: 10pt;"&gt;&amp;nbsp;Scenario 2:&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;b&gt;&lt;span style="color: blue; font-size: 10pt;"&gt;Creating or Updating an Opportunity (just for an example,&amp;nbsp; might be any object). Setting the related Account of the Opportunity.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="color: black; font-size: 10pt;"&gt;So, let's say that you create 5 Opportunities and you set the Owner to "User X". You set the Account to "Account X". When your code tries to insert these 5 opportunities, it fails and you get the same error message.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="color: black; font-size: 10pt;"&gt;System.DmlException: Insert failed. First exception on row 2; first error: INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY, insufficient access rights on cross-reference id: []&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;b&gt;&lt;span style="color: black; font-size: 10pt;"&gt;Reason:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="color: black; font-size: 10pt;"&gt;This is because "User X" does not have access to "Account X". When you try to create an Opportunity for "Account X" that he does not have access to the code fails. Either grant access to "User X" for "Account X" manually or through code and then do the Insert.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;b&gt;&lt;span style="color: blue; font-size: 10pt;"&gt;Scenario 3:&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;b&gt;&lt;span style="color: blue; font-size: 10pt;"&gt;The Sharing Object.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="color: black; font-size: 10pt;"&gt;This is a bit complex to get at. atleast for me. You might be aware that every object has its own Share object. So, Account has AccountShare and Customobj__c has Customobj__Share&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="color: black; font-size: 10pt;"&gt;When you insert or update records in this object you might receive the same error message. There are a number of reasons for this to happen.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *If you are trying to share "Record X" with "User Y" and you yourself do not have access to "Record x", this error happens.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *If you are trying to share "Record X" with "User Y" and "User Y" does not have access to the object (the profile level permission, create read edit delete), this error happens.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&lt;/span&gt;&lt;b&gt;&lt;span style="color: red; font-size: 10pt;"&gt;If you are trying to share "Record X" with "User Y" and "User Y" already has access to "Record X" this error happens.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-size: 10pt;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-5691997554920558022?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/5691997554920558022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/12/insufficientaccessoncrossreferenceentit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/5691997554920558022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/5691997554920558022'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/12/insufficientaccessoncrossreferenceentit.html' title='insufficient_access_on_cross_reference_entity APEX / Salesforce'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-5176170846756961892</id><published>2011-09-23T16:17:00.000-07:00</published><updated>2011-09-23T19:33:27.704-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='upload multiple files'/><category scheme='http://www.blogger.com/atom/ns#' term='attachment'/><title type='text'>SF Uploadify - A cool way to upload multiple files in Salesforce</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;SF Uploadify is a solution developed by &lt;a href="https://twitter.com/#%21/aslambari"&gt;Aslam Bari&lt;/a&gt;. Simply Cool and interesting.&lt;br /&gt;&lt;br /&gt;Here is a small screencast of how the tool works - &lt;a href="http://screencast.com/t/ibDqgMBbfQ"&gt;http://screencast.com/t/ibDqgMBbfQ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can check his blog for more information about this tool in the links below:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://techsahre.blogspot.com/2011/09/sf-uploadify-file-uploading-utility-for.html"&gt;http://techsahre.blogspot.com/2011/09/sf-uploadify-file-uploading-utility-for.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.aslambari.com/sf_uploadify.html"&gt;http://www.aslambari.com/sf_uploadify.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-5176170846756961892?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/5176170846756961892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/09/sf-uploadify-cool-way-to-upload.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/5176170846756961892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/5176170846756961892'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/09/sf-uploadify-cool-way-to-upload.html' title='SF Uploadify - A cool way to upload multiple files in Salesforce'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-369633135098477111</id><published>2011-09-16T21:21:00.000-07:00</published><updated>2012-01-24T11:49:22.539-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='radiobutton'/><title type='text'>Radiobutton in a Datatable in Visualforce Page</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;As the title of the article implies, in this post we will be seeing an example which uses radio button in a table in visualforce and allows selecting one of the records in the table.&lt;br /&gt;&lt;br /&gt;You can see a demo of the example here - &lt;a href="http://forcetreedemos-developer-edition.ap1.force.com/forcetreedemos/radiobutton"&gt;Click here &lt;/a&gt;(&lt;a href="http://forcetreedemos-developer-edition.ap1.force.com/forcetreedemos"&gt;forcetreedemos&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Visualforce Page:&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page controller="RadioButton" showheader="false"&amp;gt;&lt;br /&gt;&amp;lt;apex:form&amp;gt;&lt;br /&gt;&amp;lt;apex:pageblock id="allcons" title="Available Contacts"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:pageblocktable id="allcons" value="{!AllContacts}" var="allcon"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headervalue="Set as Primary"&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:actionsupport action="{!selectcon}" event="onclick" rerender="consel,allcons"&amp;gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type="radio" /&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:param name="conid" value="{!allcon.Id}"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:param&amp;gt;&amp;lt;/apex:actionsupport&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:column&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headervalue="Last Name"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputfield value="{!allcon.LastName}"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:outputfield&amp;gt;&amp;lt;/apex:column&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headervalue="First Name"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputfield value="{!allcon.FirstName}"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:outputfield&amp;gt;&amp;lt;/apex:column&amp;gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headervalue="Email"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputfield value="{!allcon.Email}"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:outputfield&amp;gt;&amp;lt;/apex:column&amp;gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headervalue="Phone"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputfield value="{!allcon.Phone}"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:outputfield&amp;gt;&amp;lt;/apex:column&amp;gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:pageblocktable&amp;gt;&lt;br /&gt;&amp;lt;/apex:pageblock&amp;gt; &lt;br /&gt;&amp;lt;apex:pageblock id="consel" title="Selected Contact"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:pageblocktable id="allcons" value="{!selectedContact}" var="selcon"&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headervalue="Last Name"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputfield value="{!selcon.LastName}"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:outputfield&amp;gt;&amp;lt;/apex:column&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headervalue="First Name"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputfield value="{!selcon.FirstName}"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:outputfield&amp;gt;&amp;lt;/apex:column&amp;gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headervalue="Email"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputfield value="{!selcon.Email}"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:outputfield&amp;gt;&amp;lt;/apex:column&amp;gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headervalue="Phone"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputfield value="{!selcon.Phone}"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:outputfield&amp;gt;&amp;lt;/apex:column&amp;gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:pageblocktable&amp;gt;&lt;br /&gt;&amp;lt;/apex:pageblock&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;lt;/apex:form&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Apex Class: RadioButton&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;public class RadioButton {&lt;br /&gt;List&amp;lt;contact&amp;gt; selectcon;&lt;br /&gt;Public List&amp;lt;contact&amp;gt; getAllContacts()&lt;br /&gt;{&lt;br /&gt;    List&amp;lt;contact&amp;gt; allcons = [Select Id,FirstName,LastName,Email,Phone from Contact limit 5];&lt;br /&gt;    return allcons;&lt;br /&gt;}    &lt;br /&gt;Public void selectcon()&lt;br /&gt;{&lt;br /&gt;    String selcontactid = System.currentPagereference().getParameters().get('conid');&lt;br /&gt;    Contact con = [Select Id,FirstName,LastName,Email,Phone from Contact where Id=:selcontactid];&lt;br /&gt;    selectcon =  new List&amp;lt;contact&amp;gt;();&lt;br /&gt;    selectcon.add(con);&lt;br /&gt;}&lt;br /&gt;Public List&amp;lt;contact&amp;gt; getselectedContact()&lt;br /&gt;{&lt;br /&gt;    return selectcon;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;script type="text/javascript"&gt;     SyntaxHighlighter.all()&lt;/script&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-369633135098477111?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/369633135098477111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/09/radiobutton-in-datatable-in-visualforce.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/369633135098477111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/369633135098477111'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/09/radiobutton-in-datatable-in-visualforce.html' title='Radiobutton in a Datatable in Visualforce Page'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-1269881584585324368</id><published>2011-09-16T15:44:00.000-07:00</published><updated>2011-09-16T15:44:00.535-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chatter'/><category scheme='http://www.blogger.com/atom/ns#' term='embed chatter'/><title type='text'>How to embed Chatter in a Visualforce page or as a sidebar component?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This Winter 11, there is a new chatter component which allows you to embed chatter feeds in a Visualforce page.&lt;br /&gt;&lt;br /&gt;Here is the official release notes and further details. &lt;a href="http://developer.force.com/releases/release/Winter11/Chatter+Components+for+Visualforce"&gt;Click here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is a sample visualforce page using this component. This page displays the feeds for the current logged in user.&lt;/div&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page &amp;gt;&lt;br /&gt;  &amp;lt;chatter:feed entityId="{!$User.Id}"/&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Note that the "entityID" attribute determines the feeds to be displayed. This can be a UserId, a custom or standard object record ID provided chatter is enabled for that object.&lt;br /&gt;&lt;br /&gt;You may also create a Visualforce page with this component, and then create a home page sidebar component and embed the Visualforce page in the sidebar component.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-1269881584585324368?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/1269881584585324368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/09/how-to-embed-chatter-in-visualforce.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1269881584585324368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1269881584585324368'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/09/how-to-embed-chatter-in-visualforce.html' title='How to embed Chatter in a Visualforce page or as a sidebar component?'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-5281191818795044633</id><published>2011-09-16T15:26:00.000-07:00</published><updated>2011-09-16T15:27:40.893-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parameters'/><title type='text'>How to fetch page paramters directly in Visualforce Page?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;A previous post describes how to pass paramters to a Visualforce page, and fetch the passed parameter values in your Apex Class(controller). &lt;a href="http://www.forcetree.com/2009/06/passing-parameters-to-visualforce-page.html"&gt;Click here&lt;/a&gt; to read the post.&lt;br /&gt;&lt;br /&gt;In this article we will see how to fetch the paramter value directly in your Visualforce page instead of getting it from the Apex Class(controller).&lt;br /&gt;&lt;br /&gt;{!$CurrentPage.parameters.paramtername} &lt;br /&gt;&lt;br /&gt;This global variable provides the capability.&lt;br /&gt;&lt;br /&gt;Let's see a small visualforce example to see how it works.&lt;code&gt; &lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page&amp;gt;&lt;br /&gt;  The value of the paramter name passed to this page is :{!$CurrentPage.parameters.name} &lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Save the above Visualforce page with the name&amp;nbsp; "testpage".&lt;br /&gt;&lt;br /&gt;Now, go to the URL bar and type the following address&lt;br /&gt;&lt;br /&gt;http://yourinstance.salesforce.com/apex/testpage?name=Edwin&lt;br /&gt;&lt;br /&gt;Your Visualforce page will display the output "&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;The value of the paramter name passed to this page is : Edwin&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;You can use the apex:param component when you want to pass paramters dynamically between visualforce pages, and the above method works as usual.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-5281191818795044633?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/5281191818795044633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/09/how-to-fetch-page-paramters-directly-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/5281191818795044633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/5281191818795044633'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/09/how-to-fetch-page-paramters-directly-in.html' title='How to fetch page paramters directly in Visualforce Page?'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-7882209470934093580</id><published>2011-09-01T00:16:00.000-07:00</published><updated>2011-09-01T00:16:53.985-07:00</updated><title type='text'>Implementing styles and CSS in Visualforce Pages</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This is a step by step guide which takes you through getting started with using styles and CSS in your Visualforce Pages.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px" id="__ss_8405200"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/EdwinVijayR/visualforce-css-developer-guideby-forcetreecom" title="Visualforce css developer guide(by forcetree.com)" target="_blank"&gt;Visualforce css developer guide(by forcetree.com)&lt;/a&gt;&lt;/strong&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/8405200" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/EdwinVijayR" target="_blank"&gt;Edwin Vijay R&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-7882209470934093580?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/7882209470934093580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/09/implementing-styles-and-css-in.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7882209470934093580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7882209470934093580'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/09/implementing-styles-and-css-in.html' title='Implementing styles and CSS in Visualforce Pages'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-2004455163206093986</id><published>2011-08-10T22:14:00.000-07:00</published><updated>2011-08-10T22:14:07.670-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamic soql'/><title type='text'>General Query Utility - using Dynamic SOQL</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This sample code covers a general query utility which can be used to query any object.&lt;br /&gt;&lt;br /&gt;This is the general class which runs the query. Comments are embedded inline for understanding the functionality.&lt;br /&gt;&lt;br /&gt;Copy and paste this class&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;Public class QueryUtility&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Function to run the query&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public List&amp;lt;sObject&amp;gt; runQuery(String objname,String[] fieldnames,String condition)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;sObject&amp;gt; queryresult;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String fieldslist = '';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Generate the fieldslist from the string array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (fieldnames != NULL)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(fieldnames.size() &amp;gt; 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (Integer i=0; i &amp;lt; fieldnames.size(); i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( i &amp;lt;= (fieldnames.size() - 2))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldslist = fieldslist+fieldnames[i]+',';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldslist = fieldslist+fieldnames[i];&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Construct the query string&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String soqlquery = 'Select '+fieldslist+' from '+objname+' '+condition;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Run the query&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queryresult = Database.query(soqlquery);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return queryresult;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;To Call this class:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can call this class from any other class. Below is a sample code which you can embed into any class or you can execute this from the system log.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;// Construct the list of fields&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] flist&amp;nbsp; = new List&amp;lt;String&amp;gt;{'Name','Id'};&lt;br /&gt;// Initialte a new variable of the general utility class&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; QueryUtility test = new QueryUtility();&lt;br /&gt;// Call the runquery method to execute the query. Note that the condition has to be passed as an empty string if you do not have any condition&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Account[] qresult = test.runQuery('Account',flist,'');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system.debug('The query result is'+qresult); &lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-2004455163206093986?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/2004455163206093986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/08/general-query-utility-using-dynamic.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2004455163206093986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2004455163206093986'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/08/general-query-utility-using-dynamic.html' title='General Query Utility - using Dynamic SOQL'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-1720839029173473678</id><published>2011-07-27T23:19:00.000-07:00</published><updated>2011-07-27T23:33:04.611-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poll'/><title type='text'>Poll Component for Salesforce</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;This article covers a sample code to insert a poll component into your Salesforce.com instance as a home page component, or elsewhere Visualforce is supported.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;This component allows administrators to open up a simple poll for users to get feedback from users. Once installed, the poll component can be configured easily.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Below is a demo of the application. Note that the below is an iframe of a Force.com Site page, Yes, it's a visualforce page embedded within this blog.&lt;/span&gt;&lt;/div&gt;&lt;iframe frameborder="0" height="220px" src="http://forcetreedemos-developer-edition.ap1.force.com/forcetreedemos/apex/poll?core.apexpages.devmode.url=1" width="500px"&gt;&amp;amp;lt;p&amp;amp;gt;&amp;amp;amp;amp;amp;amp;lt;p&amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;br /&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;amp;amp;gt;&amp;amp;lt;/p&amp;amp;gt;&lt;/iframe&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;You can watch the demo at &lt;a href="http://forcetreedemos-developer-edition.ap1.force.com/forcetreedemos"&gt;forcetreedemos&lt;/a&gt; too..&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;To install the app in your Salesforce instance, install the below package.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Production, Developer Org -&amp;nbsp;&lt;span class="Apple-style-span" style="color: orange; font-size: 12px;"&gt;&lt;a href="https://login.salesforce.com/packaging/installPackage.apexp?p0=04t900000000sla" id="ExportPackageDetailPage:theForm:versionDetailBlock:j_id102:j_id106:pkgInstallUrl" name="ExportPackageDetailPage:theForm:versionDetailBlock:j_id102:j_id106:pkgInstallUrl"&gt;&lt;b&gt;https://login.salesforce.com/packaging/installPackage.apexp?p0=04t900000000sla&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Sandbox -&amp;nbsp;&lt;span class="Apple-style-span" style="color: orange; font-size: 12px;"&gt;&lt;a href="https://login.salesforce.com/packaging/installPackage.apexp?p0=04t900000000sla" id="ExportPackageDetailPage:theForm:versionDetailBlock:j_id102:j_id106:pkgInstallUrl" name="ExportPackageDetailPage:theForm:versionDetailBlock:j_id102:j_id106:pkgInstallUrl"&gt;&lt;b&gt;https://test.salesforce.com/packaging/installPackage.apexp?p0=04t900000000sla&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Suggestions and Comments welcome!&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-1720839029173473678?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/1720839029173473678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/07/poll-component-for-salesforce.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1720839029173473678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1720839029173473678'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/07/poll-component-for-salesforce.html' title='Poll Component for Salesforce'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-28935143220856611</id><published>2011-06-23T15:36:00.000-07:00</published><updated>2011-06-23T15:36:04.705-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='salesforce test method'/><title type='text'>A Guide to writing Test Methods for an Apex Class in Salesforce - Part 2</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;b&gt;The Basic - Getting Started&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Let's start by considering a simple apex class.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;Public class mysimpleclass&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; Public void samplemethod()&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Integer a = 10;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Integer b = a + 20;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; system.debug('The value of b is'+b);&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;}&amp;nbsp;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Now, we shall write the test method for this class.&lt;br /&gt;&lt;br /&gt;Step 1: You have two options. You can have the test method in the same class above, OR you can have a separate class which has the test method for the above class. I always go with a separate class, because&lt;br /&gt;&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;It is easy to organize.&lt;/li&gt;&lt;li&gt;Make use of @istest notation to prevent the test class from being counted against the organization apex code limit. Remeber, comments and classes with @istest notation are not counted.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Create a new apex class as below. Please note that this is the basic standard for any test class.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&lt;code&gt;@istest&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;private class mysimpleclass_TestMethod // Name of the test class, Can be any name&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;{ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&amp;nbsp; &amp;nbsp; static testmethod void mysimpleclass_TestMethod() &amp;nbsp; // Name of the test method. Must be the same as the class name&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mysimpleclass testcls = new mysimpleclass(); &amp;nbsp; // Initialize variable for original class&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; testcls.samplemethod(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Call Function of Original class&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&amp;nbsp; &amp;nbsp; } &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Step 2: &amp;nbsp;Save the class and click on the "Run Test" button as shown below.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-QEVGXR72exU/TgO5ww6yfJI/AAAAAAAAAUo/U6CmmaHYwJo/s1600/TestGuide1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="32" src="http://4.bp.blogspot.com/-QEVGXR72exU/TgO5ww6yfJI/AAAAAAAAAUo/U6CmmaHYwJo/s320/TestGuide1.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Step 3: You will &amp;nbsp;see the screen shown below.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-7LbxqdqTJcw/TgO8F_f0vxI/AAAAAAAAAUs/JGmq6YdqTE0/s1600/TestGuide2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-7LbxqdqTJcw/TgO8F_f0vxI/AAAAAAAAAUs/JGmq6YdqTE0/s320/TestGuide2.JPG" width="304" /&gt;&lt;/a&gt;&lt;/div&gt;As you can see, the test method coverage is 100%, meaning that all lines of the apex class have been covered.&lt;br /&gt;&lt;br /&gt;Now, click on the "100" link highlighted in the "Code Coverage" section as shown above.&lt;br /&gt;You will see the screen shown below..&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-d5xa2BWk91M/TgO9C5Dnp-I/AAAAAAAAAUw/C738g3osMd4/s1600/TestGuide3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="209" src="http://2.bp.blogspot.com/-d5xa2BWk91M/TgO9C5Dnp-I/AAAAAAAAAUw/C738g3osMd4/s320/TestGuide3.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;A Blue color denotes - CODE COVERED&lt;br /&gt;A RED color denotes - CODE NOT COVERED&lt;br /&gt;Since our code coverage is 100% we do not have any red lines.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-28935143220856611?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/28935143220856611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/06/guide-to-writing-test-methods-for-apex.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/28935143220856611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/28935143220856611'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/06/guide-to-writing-test-methods-for-apex.html' title='A Guide to writing Test Methods for an Apex Class in Salesforce - Part 2'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-QEVGXR72exU/TgO5ww6yfJI/AAAAAAAAAUo/U6CmmaHYwJo/s72-c/TestGuide1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-2817246363049279555</id><published>2011-05-06T15:59:00.000-07:00</published><updated>2011-05-06T16:02:38.691-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Simulator issue'/><title type='text'>Pointing your Blackberry Smartphone / Simulator to the Sandbox</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I have done this before and ran into the same problem again recently. Before I forget this again, let me write it down just in case there are people who think like me.&lt;br /&gt;&lt;br /&gt;So, it was just one letter which cost me 1 to 2 hours of research.&lt;br /&gt;&lt;br /&gt;To point your Blackberry Device or your Blackberry Simulator to the Sandbox, you will have to do the steps as outlined in this article by Salesforce. &lt;a href="http://success.salesforce.com/apex/questiondetail?qId=a1X30000000HdaOEAS"&gt;Click here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I did exactly (rather not), what was told there and i couldn't point by Blackberry to the Sandbox. After two hours i found out what was wrong.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-gF0dezdCTF8/TcR72M7YozI/AAAAAAAAAUk/dki9WXSC8VY/s1600/Sand.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="45" src="http://3.bp.blogspot.com/-gF0dezdCTF8/TcR72M7YozI/AAAAAAAAAUk/dki9WXSC8VY/s400/Sand.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I typed in, &lt;b&gt;&lt;span class="Apple-style-span" style="color: red; font-size: large;"&gt;Izsand&lt;/span&gt; &lt;/b&gt;(ie, a Capital I ( a &lt;span class="Apple-style-span" style="color: red; font-size: large;"&gt;&lt;b&gt;I as in Ice&lt;/b&gt;&lt;/span&gt;) and then zsand).&lt;br /&gt;&lt;br /&gt;It should have been &lt;span class="Apple-style-span" style="color: red; font-size: large;"&gt;&lt;b&gt;lzsand&lt;/b&gt;&lt;/span&gt; (ie, a small &lt;span class="Apple-style-span" style="color: red; font-size: large;"&gt;&lt;b&gt;l as in lazy&lt;/b&gt;&lt;/span&gt; and then zsand).&lt;br /&gt;&lt;br /&gt;Probably I should go back and learn alphabets properly.&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-2817246363049279555?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/2817246363049279555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/05/pointing-your-blackberry-smartphone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2817246363049279555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2817246363049279555'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/05/pointing-your-blackberry-smartphone.html' title='Pointing your Blackberry Smartphone / Simulator to the Sandbox'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-gF0dezdCTF8/TcR72M7YozI/AAAAAAAAAUk/dki9WXSC8VY/s72-c/Sand.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-3012110789930970251</id><published>2011-04-29T16:13:00.000-07:00</published><updated>2011-04-29T16:13:39.026-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hierarchy'/><category scheme='http://www.blogger.com/atom/ns#' term='tree'/><title type='text'>Tree View in a Visualforce Page... Accounts/Contacts/Cases in a single view</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This article would cover steps to create a Visualforce Page which outputs a tree like structure wherein you could view &lt;b&gt;Accounts&lt;/b&gt;, the &lt;b&gt;Contacts &lt;/b&gt;related to the account and the &lt;b&gt;Cases &lt;/b&gt;related to the Contact - All in one single tree structure.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://forcetreedemos-developer-edition.ap1.force.com/forcetreedemos"&gt;Watch a DEMO here.....&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Screenshot:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Ih_28cGoPKk/TbtC52d65tI/AAAAAAAAAUY/hNgnnSejsos/s1600/treeview.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-Ih_28cGoPKk/TbtC52d65tI/AAAAAAAAAUY/hNgnnSejsos/s320/treeview.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Step 1:&lt;br /&gt;&lt;br /&gt;Download the Jquery Plugin from &lt;a href="http://plugins.jquery.com/node/18/release"&gt;here&lt;/a&gt;. Upload this Zip file into Static Resources with the name "Jtreeview"&lt;br /&gt;&lt;br /&gt;Step 2:&lt;br /&gt;&lt;br /&gt;Create the Apex Class "treenodes" and paste the below code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;public class treenodes {&lt;br /&gt;&lt;br /&gt;/* Wrapper class to contain the nodes and their children */&lt;br /&gt;public class cNodes&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;public List&amp;lt;Contact&amp;gt; parent {get; set;}&lt;br /&gt;&amp;nbsp;Public Account gparent {get;set;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;public cNodes(Account &amp;nbsp;gp, List&amp;lt;Contact&amp;gt; p)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; parent = p;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; gparent = gp;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;/* end of Wrapper class */ &lt;br /&gt;&lt;br /&gt;Public List&amp;lt;cNodes&amp;gt; hierarchy;&lt;br /&gt;&lt;br /&gt;Public List&amp;lt;cNodes&amp;gt; getmainnodes()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;hierarchy = new List&amp;lt;cNodes&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;List&amp;lt;Account&amp;gt; tempparent = [Select Id,Name from Account];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (Integer i =0; i&amp;lt; tempparent.size() ; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&amp;lt;Contact&amp;gt; tempchildren = [Select Id,FirstName,LastName,(Select Id,CaseNumber,Subject from Cases) from Contact where AccountId = :tempparent[i].Id];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;hierarchy.add(new cNodes(tempparent[i],tempchildren));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; } &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return hierarchy;&lt;br /&gt;} &amp;nbsp; &lt;br /&gt;}&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Step 3:&lt;br /&gt;&lt;br /&gt;Create a Visualforce Page "TreeViewDemo" and paste the below code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page sidebar="false" controller="treenodes" showheader="false"&amp;gt;&lt;br /&gt;&amp;lt;!-- Include the Jquery Script files --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;link rel="stylesheet" href="{!URLFOR($Resource.Jtreeview,'Jquerytreeview/jquery.treeview.css')}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;script src="{!URLFOR($Resource.Jtreeview,'Jquerytreeview/jquery.js')}" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;script src="{!URLFOR($Resource.Jtreeview,'Jquerytreeview/jquery.cookie.js')}" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;script src="{!URLFOR($Resource.Jtreeview,'Jquerytreeview/jquery.treeview.js')}" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;!-- End of Javascript files --&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$(function() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$("#tree").treeview({&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;collapsed: false,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;animated: "medium",&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;control:"#sidetreecontrol",&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;persist: "location"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;});&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;})&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;&amp;lt;!-- Tree --&amp;gt;&lt;br /&gt;&amp;lt;div class="treeheader" style="height:0px;"&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div id="sidetreecontrol"&amp;gt;&amp;lt;a href="?#"&amp;gt;&amp;lt;font style="color:blue;"&amp;gt;Collapse All&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt; | &amp;lt;a href="?#"&amp;gt;&amp;lt;font style="color:blue;"&amp;gt;Expand All&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;ul id="tree"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;apex:repeat value="{!mainnodes}" var="parent"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;&amp;lt;apex:outputtext style="color:blue;" escape="false" value="{!parent.gparent.Name}"/&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;ul&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;apex:repeat value="{!parent.parent}" var="child"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;li&amp;gt;&amp;lt;span class="formattextcon"&amp;gt;&amp;lt;apex:outputtext style="color:green;" escape="false" value="{!child.LastName}"/&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;ul&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;apex:repeat value="{!child.Cases}" var="gchildren"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;li&amp;gt; &amp;lt;span class="formattextcon"&amp;gt; &amp;lt;apex:outputtext escape="false" style="color:red;" value="{!gchildren.CaseNumber}"/&amp;gt; &amp;lt;b&amp;gt;||&amp;lt;/b&amp;gt; &amp;amp;nbsp;&amp;lt;apex:outputtext escape="false" value="{!gchildren.Subject}"/&amp;gt; &amp;lt;/span&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/apex:repeat&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/ul&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/apex:repeat&amp;gt; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/ul&amp;gt; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/apex:repeat&amp;gt;&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;lt;!-- End of Tree --&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;Note: You may modify the hierarchy by replacing the Objects and the queries with your required ones. Also, you may have to optimize the apex class to handle more than 100 queries as this demo has a SOQL query within a FOR loop (An Example of bad programming practice).&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-3012110789930970251?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/3012110789930970251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/04/tree-view-in-visualforce-page.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/3012110789930970251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/3012110789930970251'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/04/tree-view-in-visualforce-page.html' title='Tree View in a Visualforce Page... Accounts/Contacts/Cases in a single view'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Ih_28cGoPKk/TbtC52d65tI/AAAAAAAAAUY/hNgnnSejsos/s72-c/treeview.JPG' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-7157365392314298293</id><published>2011-04-21T15:42:00.000-07:00</published><updated>2011-04-23T22:19:10.943-07:00</updated><title type='text'>Incident and Timesheet Management for Salesforce</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I have put together a small application which helps log tickets, and track them. This application was specifically designed keeping in mind the way tickets/incidents are handled in a typical IT Service Desk.&lt;br /&gt;&lt;br /&gt;This tool also has a timesheet feature, which logs the amount of work spent by each employee on each ticket.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Watch a working Demo of the tool here....@ &lt;a href="http://forcetreedemos-developer-edition.ap1.force.com/forcetreedemos"&gt;forcetreedemos&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Timesheet Management - &lt;a href="http://forcetreedemos-developer-edition.ap1.force.com/forcetreedemos/apex/TimesheetManagement?sfdc.tabName=01r900000009Ihr"&gt;Click here&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Incident Management - &lt;a href="http://forcetreedemos-developer-edition.ap1.force.com/forcetreedemos/apex/IncidentManagement?sfdc.tabName=01r900000009Ihq"&gt;Click here&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Below are some of the screenshots from this tool. You can install the package from here.&lt;br /&gt;&lt;br /&gt;To install to Production/Developer instance :&amp;nbsp;&lt;span class="Apple-style-span" style="color: blue; font-family: Arial, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;a href="https://login.salesforce.com/?startURL=%2Fpackaging%2FinstallPackage.apexp%3Fp0%3D04t900000000mDE" id="ExportPackageDetailPage:j_id12:versionDetailBlock:j_id117:j_id120:pkgInstallUrl" name="ExportPackageDetailPage:j_id12:versionDetailBlock:j_id117:j_id120:pkgInstallUrl"&gt;https://login.salesforce.com/?startURL=%2Fpackaging%2FinstallPackage.apexp%3Fp0%3D04t900000000mDE&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To install to your Sandbox:&amp;nbsp;&lt;span class="Apple-style-span" style="color: blue; font-family: Arial, Helvetica, sans-serif; font-size: 12px;"&gt;&lt;a href="https://login.salesforce.com/?startURL=%2Fpackaging%2FinstallPackage.apexp%3Fp0%3D04t900000000mDE" id="ExportPackageDetailPage:j_id12:versionDetailBlock:j_id117:j_id120:pkgInstallUrl" name="ExportPackageDetailPage:j_id12:versionDetailBlock:j_id117:j_id120:pkgInstallUrl"&gt;https://test.salesforce.com/?startURL=%2Fpackaging%2FinstallPackage.apexp%3Fp0%3D04t900000000mDE&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Screenshots:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-YWXTFnGnIwc/TbCx3yVCyAI/AAAAAAAAAUI/lAHpsT8R5uU/s1600/Screen1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-YWXTFnGnIwc/TbCx3yVCyAI/AAAAAAAAAUI/lAHpsT8R5uU/s320/Screen1.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-oOcJldhBPB4/TbCyxCIIXQI/AAAAAAAAAUQ/gvY5fKrga4w/s1600/Screen2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-oOcJldhBPB4/TbCyxCIIXQI/AAAAAAAAAUQ/gvY5fKrga4w/s320/Screen2.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-bI2HzywJCxM/TbCyxpTXfoI/AAAAAAAAAUU/9h9qT7d-4Gs/s1600/Screen3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-bI2HzywJCxM/TbCyxpTXfoI/AAAAAAAAAUU/9h9qT7d-4Gs/s320/Screen3.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-co5ACW_Xlxw/TbCywxvQGrI/AAAAAAAAAUM/69-bAgYkBhE/s1600/Screen4.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-co5ACW_Xlxw/TbCywxvQGrI/AAAAAAAAAUM/69-bAgYkBhE/s320/Screen4.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-7157365392314298293?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/7157365392314298293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/04/incident-and-timesheet-management-for.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7157365392314298293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7157365392314298293'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/04/incident-and-timesheet-management-for.html' title='Incident and Timesheet Management for Salesforce'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-YWXTFnGnIwc/TbCx3yVCyAI/AAAAAAAAAUI/lAHpsT8R5uU/s72-c/Screen1.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-6179207412902328052</id><published>2011-03-15T15:35:00.000-07:00</published><updated>2011-03-15T15:35:47.609-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iSalesforce'/><category scheme='http://www.blogger.com/atom/ns#' term='igoogle for salesforce'/><title type='text'>iGoogle like Homepage for Salesforce</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;While there is already an "Idea Under Construction" for a customizable homepage &lt;a href="https://sites.secure.force.com/success/ideaView?id=08730000000BqE6AAK"&gt;here&lt;/a&gt;, you may still want to look at the below application.&lt;br /&gt;&lt;br /&gt;This excellent app has been developed by&amp;nbsp;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;a href="http://www.kusiri.com/" rel="nofollow" style="color: #0000cc;"&gt;Kusiri&lt;/a&gt;&amp;nbsp;and is called iSalesforce.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;The source code can be downloaded from &lt;a href="http://code.google.com/p/isalesforce/source/browse/"&gt;here&lt;/a&gt;. Here is the video from the app's code share page.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; line-height: 16px;"&gt;&lt;iframe allowfullscreen="" frameborder="0" height="400" src="http://www.youtube.com/embed/G1c7JabwWzY" title="YouTube video player" width="460"&gt;&lt;/iframe&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-6179207412902328052?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/6179207412902328052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/03/igoogle-like-homepage-for-salesforce.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/6179207412902328052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/6179207412902328052'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/03/igoogle-like-homepage-for-salesforce.html' title='iGoogle like Homepage for Salesforce'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/G1c7JabwWzY/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-1072222373579626944</id><published>2011-03-15T15:24:00.000-07:00</published><updated>2011-03-15T15:40:48.313-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='dashboard'/><title type='text'>Dashboards in Visualforce Page - A Cool Way!!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;What if you wanted to display a dashboard in a Visualforce Page, or what if you do not like the standard&amp;nbsp;dashboard's&amp;nbsp;of Salesforce and wanted to create new dashboard's.&lt;br /&gt;&lt;br /&gt;This article shows an example of displaying dashboard's in a Visualforce page using JQuery Flot.&lt;br /&gt;&lt;br /&gt;JQuery Flot is an open source Jquery Plugin which can be downloaded from &lt;a href="http://code.google.com/p/flot/"&gt;here&lt;/a&gt;.The link has proper documentation and the various ways of using Flot.&lt;br /&gt;&lt;br /&gt;You can watch a demo in action &lt;a href="http://forcetreedemos-developer-edition.ap1.force.com/forcetreedemos"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Screenshot:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-VjY1ZaFufRM/TX_mRMatcrI/AAAAAAAAAUE/d95OFLjG9Ik/s1600/dashboard.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="170" src="https://lh5.googleusercontent.com/-VjY1ZaFufRM/TX_mRMatcrI/AAAAAAAAAUE/d95OFLjG9Ik/s320/dashboard.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Step 1:&amp;nbsp;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Get the Jquery Flot ZIP file from &lt;a href="http://code.google.com/p/flot/downloads/list"&gt;here&lt;/a&gt;. Make sure that you download the latest version when available. This example was tested with&amp;nbsp;&lt;b&gt;Flot  version 0.6.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Step 2:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Upload the ZIP file just downloaded into Static Resource. Let's Name the Static Resource "FlotDashboard". You may rename it to a meaningful name if you like to.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Step 3:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Let's create a Visualforce Page to see how the dashboard works.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page showheader="false"&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;title&amp;gt;Flot Examples&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;link href="{!URLFOR($Resource.FlotDashboard,'flot/examples/layout.css')}" rel="stylesheet" type="text/css"&amp;gt;&amp;lt;/link&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;!--[if IE]&amp;gt;&amp;lt;script language="javascript" type="text/javascript" src="{!URLFOR($Resource.FlotDashboard,'flot/excanvas.min.js')}"&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;![endif]--&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;script language="javascript" type="text/javascript" src="{!URLFOR($Resource.FlotDashboard,'flot/jquery.js')}"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;script language="javascript" type="text/javascript" src="{!URLFOR($Resource.FlotDashboard,'flot/jquery.flot.js')}"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;script language="javascript" type="text/javascript" src="{!URLFOR($Resource.FlotDashboard,'flot/jquery.flot.stack.js')}"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;h1&amp;gt;Flot Examples&amp;lt;/h1&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;div id="placeholder" style="width:600px;height:300px"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;p&amp;gt;One of the goals of Flot is to support user interactions. Try&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pointing and clicking on the points.&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;p id="hoverdata"&amp;gt;Mouse hovers at&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(&amp;lt;span id="x"&amp;gt;0&amp;lt;/span&amp;gt;, &amp;lt;span id="y"&amp;gt;0&amp;lt;/span&amp;gt;). &amp;lt;span id="clickdata"&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;p&amp;gt;A tooltip is easy to build with a bit of jQuery code and the&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;data returned from the plot.&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;p&amp;gt;&amp;lt;input id="enableTooltip" type="checkbox"/&amp;gt;Enable tooltip&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script id="source" language="javascript" type="text/javascript"&amp;gt;&lt;br /&gt;$(function () {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var sin = [], cos = [];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (var i = 0; i &amp;lt; 14; i += 0.5) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sin.push([i, Math.sin(i)]);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cos.push([i, Math.cos(i)]);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var plot = $.plot($("#placeholder"),&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [ { data: sin, label: "sin(x)"}, { data: cos, label: "cos(x)" } ], {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; series: {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; lines: { show: true },&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; points: { show: true }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; grid: { hoverable: true, clickable: true },&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; yaxis: { min: -1.2, max: 1.2 }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;function showTooltip(x, y, contents) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$('&amp;lt;div id="tooltip"&amp;gt;' + contents + '&amp;lt;/div&amp;gt;').css( {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;position: 'absolute',&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;display: 'none',&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;top: y + 5,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;left: x + 5,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;border: '1px solid #fdd',&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;padding: '2px',&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'background-color': '#fee',&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;opacity: 0.80&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}).appendTo("body").fadeIn(200);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var previousPoint = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$("#placeholder").bind("plothover", function (event, pos, item) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$("#x").text(pos.x.toFixed(2));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$("#y").text(pos.y.toFixed(2));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ($("#enableTooltip:checked").length &amp;gt; 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (item) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (previousPoint != item.datapoint) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;previousPoint = item.datapoint;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$("#tooltip").remove();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var x = item.datapoint[0].toFixed(2),&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;y = item.datapoint[1].toFixed(2);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;showTooltip(item.pageX, item.pageY,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;item.series.label + " of " + x + " = " + y);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$("#tooltip").remove();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;previousPoint = null; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;});&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$("#placeholder").bind("plotclick", function (event, pos, item) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (item) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$("#clickdata").text("You clicked point " + item.dataIndex + " in " + item.series.label + ".");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;plot.highlight(item.series, item.datapoint);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;});&lt;br /&gt;});&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Step 4:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Modify the script above to &amp;nbsp;plot your own values in the dashboard. You can also compute your data points in an apex class and pass them to the dashboard.&lt;br /&gt;&lt;br /&gt;I will try and post a more elaborate example of customizing this Dashboard using Apex.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-1072222373579626944?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/1072222373579626944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/03/dashboards-in-visualforce-page-cool-way.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1072222373579626944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1072222373579626944'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/03/dashboards-in-visualforce-page-cool-way.html' title='Dashboards in Visualforce Page - A Cool Way!!'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-VjY1ZaFufRM/TX_mRMatcrI/AAAAAAAAAUE/d95OFLjG9Ik/s72-c/dashboard.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-1226648466102770323</id><published>2011-02-12T23:10:00.000-08:00</published><updated>2011-02-12T23:10:05.187-08:00</updated><title type='text'>Upload a file as an Attachment to a record using Visualforce</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This example illustrates the way to upload a file and attach it against any record using Visualforce. The file that you upload using this will be available in the "Notes &amp;amp; Attachments" related list for the record.&lt;br /&gt;&lt;br /&gt;Click here if you are looking to upload a file into "Documents".&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1: &lt;/b&gt;Create an Apex class named "attachmentsample" . Paste the code below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;public class attachmentsample {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public attachmentsample(ApexPages.StandardController controller) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Attachment myfile;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Attachment getmyfile()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myfile = new Attachment();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return myfile;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Pagereference Savedoc()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String accid = System.currentPagereference().getParameters().get('id');&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Attachment a = new Attachment(parentId = accid, name=myfile.name, body = myfile.body);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* insert the attachment */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; insert a;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Step 2:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Create a Visualforce page named "attachment" and paste the code below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page standardController="Account" extensions="attachmentsample"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;apex:form &amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;apex:sectionHeader title="Upload a Attachment into Salesforce"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;apex:pageblock &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:pageblocksection columns="1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:inputfile value="{!myfile.body}" filename="{!myfile.Name}" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:commandbutton value="Save" action="{!Savedoc}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:pageblocksection&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/apex:pageblock&amp;gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;lt;/apex:form&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Quick Test:&lt;/b&gt;&lt;br /&gt;If you do not wish to do Step3 and 4 do this. Paste the following URL in your browser&lt;br /&gt;http://yoursalesforceinstance.com/apex/attachment?id=0017000000eiDgy&lt;br /&gt;&lt;br /&gt;ID should be a Valid Account Id of your instance.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3:&lt;/b&gt;&lt;br /&gt;Create a custom button (Detail Page button) on Account and select the new Visualforce page that you created as the source.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step4:&lt;/b&gt;&lt;br /&gt;Add the button created in Step3 to the Account Page layout.&lt;br /&gt;&lt;br /&gt;You can test this by navigating to any account and clicking on the button that you created in Step3.&lt;br /&gt;You may test&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-1226648466102770323?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/1226648466102770323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/02/upload-file-as-attachment-to-record.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1226648466102770323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1226648466102770323'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/02/upload-file-as-attachment-to-record.html' title='Upload a file as an Attachment to a record using Visualforce'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-4272830306391745384</id><published>2011-02-10T11:19:00.000-08:00</published><updated>2011-02-10T11:19:24.801-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chatter'/><title type='text'>Chatter SuperBowl Ads</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Came across these excellent Ad's and the making of these Ad's.Watch and have fun!!!&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/da88KQwVNAI?rel=0" title="YouTube video player" width="600"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/tcjAD-_H_rk?rel=0" title="YouTube video player" width="600"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;The Making of these Ad's&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/Uv5NTFagWdI?rel=0" title="YouTube video player" width="600"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-4272830306391745384?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/4272830306391745384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/02/chatter-superbowl-ads.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/4272830306391745384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/4272830306391745384'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/02/chatter-superbowl-ads.html' title='Chatter SuperBowl Ads'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/da88KQwVNAI/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-3713715041726524913</id><published>2011-01-28T16:35:00.000-08:00</published><updated>2011-01-28T16:35:06.602-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rerender rich  text field'/><title type='text'>Rich Text fields and Rerender</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;You&amp;nbsp; might be knowing that there is a field type called "Rich Text Field". This field allows you to format the text that you enter, add a URL, Insert pictures etc. It looks mostly like a big textbox with a editing toolbar at the top of the textbox. This is how a rich text field looks like.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Verdana,sans-serif; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_YExPk6W3YQg/TUNfDHyUj-I/AAAAAAAAATs/pIuOb9cZUW0/s1600/richtextfield.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_YExPk6W3YQg/TUNfDHyUj-I/AAAAAAAAATs/pIuOb9cZUW0/s1600/richtextfield.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;The number of visible lines  (the value that you specify while creating the field or editing it at  Setup -&amp;gt; Object -&amp;gt; Field) controls the height of this field in a Visualforce Page. You may also use the style attribute to define your own height.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;Rerender&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Rich Text fields do not work with rerender. So, if you say that you have a button "Add another box", and clicking on this would rerender the panel and add one more rich text field, then this wont work. You will have to remove the "rerender" attribute and it works.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;You should not have the "immediate=true" attribute as well on the commandbutton. This causes the value of the existing rich text fields to be lost.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;So, if you have a button in a page which adds more "Rich Text Fields" or does some other rerendering, remove all the rerenderings and do&amp;nbsp; a full page refresh. If you still face issues, remove the "immediate=true" attribute and try again.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-3713715041726524913?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/3713715041726524913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/01/rich-text-fields-and-rerender.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/3713715041726524913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/3713715041726524913'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/01/rich-text-fields-and-rerender.html' title='Rich Text fields and Rerender'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_YExPk6W3YQg/TUNfDHyUj-I/AAAAAAAAATs/pIuOb9cZUW0/s72-c/richtextfield.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-1639088068244826902</id><published>2011-01-27T16:28:00.000-08:00</published><updated>2011-01-27T16:30:27.199-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test methods'/><category scheme='http://www.blogger.com/atom/ns#' term='apex test coverage'/><title type='text'>A Guide to writing Test Methods for an Apex Class in Salesforce - Part 1</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Whenever you create an Apex Class (in Visualforce terms it may be called a controller or an extension), and when you want to move your Apex Class to production it is necessary that you have a Test Method for your Apex Class. Moreover, the test coverage for your Apex Class should be NOT less than 75%.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Why is this and What's the need???&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Unit test methods as it is also called, is in place to ensure that your apex code does not cause any undesired results in your production instance. A Unit Test method can be imagined of a Test script wherein you feed sample data and execute your Apex Class against the sample data. When you do so, you come to know the situations in which your Apex Class could fail or produce undesired results.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Imagine you have an Apex Class which performs something like outlined in  the Flow Diagram below.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Verdana,sans-serif; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Verdana,sans-serif; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://2.bp.blogspot.com/_YExPk6W3YQg/TUIIheO-kCI/AAAAAAAAATo/Bn73AMh3TCo/s1600/Flowchart.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="301" src="http://2.bp.blogspot.com/_YExPk6W3YQg/TUIIheO-kCI/AAAAAAAAATo/Bn73AMh3TCo/s320/Flowchart.JPG" width="320" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;In such a case, your Test Method will first give the sample value (a =3, b=2) and run the Apex Class. This time you cover the "Yes" branching. The second time you will give the value ( a =2, b =3). This time you cover the "No" branching. Now, you&amp;nbsp; have given sample data such that it covers both outcomes of a condition.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;This concept is called "Apex Test Coverage". Now, that you have given sample data twice and covered both outcomes your test coverage would be 100%. Had you given only one set of sample values, your test coverage would be 50%.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;The&amp;nbsp; Need:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Salesforce wants you to ensure that the Apex Code that you deploy to your production instance will not cause any unexpected behavior to you as well as to the them. That's the simple reason behind this. Writing test methods becomes frustrating at times, but still you will have to do it.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Note: Part 2 to be published soon. &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-1639088068244826902?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/1639088068244826902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/01/guide-to-writing-test-methods-for-apex.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1639088068244826902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1639088068244826902'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/01/guide-to-writing-test-methods-for-apex.html' title='A Guide to writing Test Methods for an Apex Class in Salesforce - Part 1'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_YExPk6W3YQg/TUIIheO-kCI/AAAAAAAAATo/Bn73AMh3TCo/s72-c/Flowchart.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-1943319541017308982</id><published>2011-01-12T15:27:00.000-08:00</published><updated>2011-01-12T15:27:01.279-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='document upload'/><title type='text'>Uploading a Document into Salesforce using Visualforce</title><content type='html'>In this article we will be understanding the procedure to upload a file into "Documents" using a Visualforce Page. You can upload a file and save it as an attachment against a record i believe, but i am not sure how to do this. Hence, this topic would only cover uploading a file to "Documents" under a folder you desire.&lt;br /&gt;&lt;br /&gt;I actually had to upload a file against a record. I uploaded the file into Documents, and then stored the reference of the file as a Field in the record. This way i can access the document from the record directly at a later point.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;apex:inputfile&amp;gt;&lt;/code&gt; is the tag that is used to upload a file.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Code Sample:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Create the following Visualforce Page&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page controller="UploadDoc"&amp;gt;&lt;br /&gt;&amp;lt;apex:form&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;apex:sectionHeader title="Upload a Document into Salesforce"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;apex:pageblock&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;apex:pageblocksection columns="1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;apex:inputfile value="{!myimage.body}" filename="{!myimage.Name}" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;apex:commandbutton value="Save" action="{!Savedoc}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/apex:pageblocksection&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/apex:pageblock&amp;gt; &amp;nbsp; &lt;br /&gt;&amp;lt;/apex:form&amp;gt; &lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The controller would be named "UploadDoc" and will have the following code&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;public class UploadDoc&lt;br /&gt;{&lt;br /&gt;Public Document mydoc;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Public Document getmyimage()&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mydoc = new Document();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return mydoc;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Public Pagereference Savedoc()&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mydoc.folderid = UserInfo.getUserId(); // Stores in the currennt users "My Personal Documents" folder&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//mydoc.folderid = 'any other id you want here'; // Fetch Id dynamically by using [Select Id from Folder where Name='My Images']. Specifying a FolderId is mandatory&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;insert mydoc;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;}&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-1943319541017308982?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/1943319541017308982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2011/01/uploading-document-into-salesforce.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1943319541017308982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1943319541017308982'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2011/01/uploading-document-into-salesforce.html' title='Uploading a Document into Salesforce using Visualforce'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-2083807182113868506</id><published>2010-12-30T13:48:00.000-08:00</published><updated>2010-12-30T13:48:04.439-08:00</updated><title type='text'>501 Certification</title><content type='html'>Long time since i wrote something in this website. I have also not been able to publish "A tip A day" regularly, it was because i had to switch my workplace to a new country. Things have settled down now and i hope to concentrate on posting good articles here..&lt;br /&gt;&lt;br /&gt;I took my 501 certification recently and could not clear it. The questions were not too difficult, nor were they too easy. Most questions were tricky.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://forcecertified.com/certifications/certified-developer/"&gt;Forcecertified.com&lt;/a&gt; is a good website where you can find a lot of resources. You even have links to recorded podcasts training sessions here. If you are going to take the certification, then make sure you visit this site.&lt;br /&gt;&lt;br /&gt;Happy New Year!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-2083807182113868506?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/2083807182113868506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2010/12/501-certification.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2083807182113868506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2083807182113868506'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2010/12/501-certification.html' title='501 Certification'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-9186263007435631971</id><published>2010-12-01T08:36:00.000-08:00</published><updated>2010-12-02T05:28:05.248-08:00</updated><title type='text'>A Tip a day</title><content type='html'>I just got his thought and wanted to give it a try. How about sharing a tip about Salesforce everyday?? Sounds good rite??&lt;br /&gt;&lt;br /&gt;OK, so i have started to do it and just published the first tip on my blog&amp;nbsp;&lt;a href="http://www.forcetree.com/p/tip-day.html"&gt;Click here&lt;/a&gt; ...&lt;br /&gt;&lt;br /&gt;Do check it out regularly and forgive me if i don't publish a tip daily (sometimes maybe once in two days or so :))&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;Updated&lt;/span&gt;&lt;/b&gt; - Link within this blog&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-9186263007435631971?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/9186263007435631971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2010/12/tip-day.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/9186263007435631971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/9186263007435631971'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2010/12/tip-day.html' title='A Tip a day'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-8860696777112191690</id><published>2010-11-15T23:35:00.000-08:00</published><updated>2010-11-15T23:35:07.341-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='text animations'/><category scheme='http://www.blogger.com/atom/ns#' term='Jquery'/><title type='text'>Animation / Text Effects in a Visualforce Page</title><content type='html'>&lt;div style="font-family: Verdana,sans-serif;"&gt;It may be required sometimes that you add some animation effects to messages displayed in your homepage or elsewhere, particularly when you want to catch the attention of a user.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;I browsed through the forums and with some advice from people was introduced to Jquery. Jquery is an advanced form of javascript. It is a opensource plugin consisting of some complex javascript functions which can be easily adapted to any webpage.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Even though i used Jquery, i still do not understand how it works nor its technical details. So, using Jquery doesn't require that you learn it completely.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;In this article i will be telling you how to use a Jquery plugin in your visualforce page, and thereby bring in animation effects into your visualforce page.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;You can view/download the Jquery plugin from here.. &lt;a href="http://www.blogger.com/"&gt;&lt;/a&gt;&lt;a href="http://jqueryui.com/demos/effect/"&gt;Click here&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;You can view a demo of the Jquery plugin inside a Visualforce Page here .. &lt;a href="http://forcetreedemos-developer-edition.ap1.force.com/forcetreedemos"&gt;Click here&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;u&gt;&lt;b&gt;Step 1:&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Download the Jquery plugin and Unzip it. You will find several folders. You will need to upload some files into Static Resources inorder to use the plugin into our Visualforce Pages.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;u&gt;&lt;b&gt;Step 2:&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Create the following static resources:&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Name refers to the name to be given to your Static Resource. Path refers to the path in the folder that you get after unzipping the Jquery plugin downloaded from &lt;a href="http://jqueryui.com/demos/effect/" target="_blank"&gt;http://jqueryui.com/demos/&lt;wbr&gt;&lt;/wbr&gt;effect/&lt;/a&gt; &lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b style="color: orange;"&gt;Name&lt;/b&gt; : TickerEffects_JqueryJS &amp;nbsp;&lt;span style="color: orange;"&gt; &lt;/span&gt;&lt;b style="color: orange;"&gt;Path&lt;/b&gt;: Jquery Effects\development-bundle\jquery-1.4.2.js&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b style="color: orange;"&gt;Name&lt;/b&gt;: TickerEffects_Core&amp;nbsp; &lt;b style="color: orange;"&gt;Path&lt;/b&gt;: Jquery Effects\development-bundle\ui\jquery.effects.core.js&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b style="color: orange;"&gt;Name&lt;/b&gt;: TickerEffects_Pulsate&amp;nbsp; &lt;b style="color: orange;"&gt;Path&lt;/b&gt;: Jquery Effects\development-bundle\ui\jquery.effects.pulsate.js&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b style="color: orange;"&gt;Name&lt;/b&gt;: explode &lt;b style="color: orange;"&gt;Path&lt;/b&gt;: Jquery Effects\development-bundle\ui\jquery.effects.explode.js&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b style="color: orange;"&gt;Name&lt;/b&gt;: highlight &lt;b style="color: orange;"&gt;Path&lt;/b&gt;: Jquery Effects\development-bundle\ui\jquery.effects.highlight.js&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b style="color: orange;"&gt;Name&lt;/b&gt;: shake &amp;nbsp;&amp;nbsp; &lt;b style="color: orange;"&gt;Path&lt;/b&gt;: Jquery Effects\development-bundle\ui\jquery.effects.shake.js&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b style="color: orange;"&gt;Name&lt;/b&gt;: democss &lt;b style="color: orange;"&gt;Path&lt;/b&gt;: Jquery Effects\development-bundle\demos\demos.css&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;u&gt;&lt;b&gt;Step 3:&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Create the following Visualforce Page.&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Verdana,sans-serif; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page showHeader="false"&amp;gt;&lt;br /&gt;&amp;lt;html lang="en"&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;meta charset="utf-8" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;jQuery UI Effects - Effect demo&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/themes/base/jquery-ui.css" &amp;gt;&amp;lt;/link&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script src="{!URLFOR($Resource.TickerEffects_JqueryJS)}"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script src="{!URLFOR($Resource.TickerEffects_Core)}"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script src="{!URLFOR($Resource.explode)}"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script src="{!URLFOR($Resource.highlight)}"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script src="{!URLFOR($Resource.TickerEffects_Pulsate)}"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script src="{!URLFOR($Resource.shake)}"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;link rel="stylesheet" href="{!URLFOR($Resource.democss)}"&amp;nbsp; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;style&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .toggler { width: 500px; height: 200px; position: relative; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #button { padding: .5em 1em; text-decoration: none; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #effect { width: 240px; height: 135px; padding: 0.4em; position: relative; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #effect h3 { margin: 0; padding: 0.4em; text-align: center; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ui-effects-transfer { border: 2px dotted gray; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/style&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(function() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // run the currently selected effect&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function runEffect() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // get effect type from &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var selectedEffect = $( "#effectTypes" ).val();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // most effect types need no options passed by default&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var options = {};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // some effects have required parameters&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( selectedEffect === "scale" ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options = { percent: 0 };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if ( selectedEffect === "transfer" ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options = { to: "#button", className: "ui-effects-transfer" };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if ( selectedEffect === "size" ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; options = { to: { width: 200, height: 60 } };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // run the effect&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $( "#effect" ).effect( selectedEffect, options, 500, runEffect);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // callback function to bring a hidden box back&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function callback() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setTimeout(function() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $( "#effect" ).removeAttr( "style" ).hide().fadeIn();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, 1000 );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // set effect from select menu value&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $( "#button" ).click(function() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; runEffect();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body background="{!URLFOR($Resource.BGImage1)}" style="font-family:Verdana;font-size:8pt;"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div class="demo"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div class="toggler"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="effect" class="ui-widget-content ui-corner-all"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Etiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede. Nulla lorem metus, adipiscing ut, luctus sed, hendrerit vitae, mi.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;select name="effects" id="effectTypes"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;option value="explode"&amp;gt;Explode&amp;lt;/option&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;option value="highlight"&amp;gt;Highlight&amp;lt;/option&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;option value="pulsate"&amp;gt;Pulsate&amp;lt;/option&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;option value="shake"&amp;gt;Shake&amp;lt;/option&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;a href="#" id="button" class="ui-state-default ui-corner-all"&amp;gt;Run Effect&amp;lt;/a&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&amp;lt;!-- End demo --&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div class="demo-description"&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;Select a effect from the drop down.&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&amp;lt;!-- End demo-description --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;See for yourself the results!!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-8860696777112191690?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/8860696777112191690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2010/11/animation-text-effects-in-visualforce.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/8860696777112191690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/8860696777112191690'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2010/11/animation-text-effects-in-visualforce.html' title='Animation / Text Effects in a Visualforce Page'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-111804689029356837</id><published>2010-11-11T02:27:00.000-08:00</published><updated>2010-11-11T02:27:04.947-08:00</updated><title type='text'>Chatter Rollout Guide</title><content type='html'>&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Some organizations have already rolled out chatter, but just in case if you are planning to roll it out soon and if would want some customizations to be done on top of just enabling Chatter, then you may want to have a look at the below article.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: orange;"&gt;&lt;u&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;The New User Interface Theme:&lt;/b&gt;&lt;/span&gt;&lt;/u&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;As you may be aware of, Chatter works only with the new User Interface theme of Salesforce. So, you will have to enable it first before you go on and turn on Chatter.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span lang="EN-GB" style="font-family: Verdana; font-size: 10pt;"&gt;SetUp&amp;nbsp; &lt;/span&gt;&lt;span lang="EN-GB" style="font-family: Wingdings; font-size: 10pt;"&gt;--&amp;gt; &lt;/span&gt;&lt;span lang="EN-GB" style="font-family: Verdana; font-size: 10pt;"&gt;App SetUp &lt;/span&gt;&lt;span lang="EN-GB" style="font-family: Wingdings; font-size: 10pt;"&gt;--&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-family: Verdana; font-size: 10pt;"&gt; Customize &lt;/span&gt;&lt;span lang="EN-GB" style="font-family: Wingdings; font-size: 10pt;"&gt;--&amp;gt;&lt;/span&gt;&lt;span lang="EN-GB" style="font-family: Verdana; font-size: 10pt;"&gt; User Interface&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_YExPk6W3YQg/TMkNkI1t8TI/AAAAAAAAATM/bKFdDSH-3Uc/s1600/NewUI.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="187" src="http://3.bp.blogspot.com/_YExPk6W3YQg/TMkNkI1t8TI/AAAAAAAAATM/bKFdDSH-3Uc/s320/NewUI.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: orange; font-family: Verdana,sans-serif;"&gt;&lt;u&gt;&lt;b&gt;Enabling Chatter:&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: Verdana,sans-serif;"&gt;&lt;span lang="EN-GB" style="font-size: small;"&gt;The next step is to enable Chatter. This can be done by going to &lt;b&gt;SetUp &lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;--&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;App SetUp &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;--&amp;gt; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;Customize &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;--&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt; Chatter &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;--&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt; Settings&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;You may optionally turn on Chatter Emails. When you turn this on, salesforce automatically sends emails to users whenever some activity happens within Chatter. It is up to the user to turn on/off his specific email notifications.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_YExPk6W3YQg/TNvDPUsFITI/AAAAAAAAATQ/jYTuo8r0o8M/s1600/chatter.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="170" src="http://2.bp.blogspot.com/_YExPk6W3YQg/TNvDPUsFITI/AAAAAAAAATQ/jYTuo8r0o8M/s320/chatter.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: orange; font-family: Verdana,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;u&gt;Some Administrative tips: &lt;/u&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;As an administrator you have access to certain fields through the API which allows you to restrict/enable options for individual users of Chatter throughout your organization. Some of them are listed below.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;u&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Object : User&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Field&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;/b&gt;&lt;span lang="EN-GB"&gt;&lt;b&gt;DigestFrequency&lt;/b&gt; - This field allows you to specify the frequency in which users get digest emails from Salesforce Chatter. Possible values are&lt;/span&gt;&lt;/span&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:View&gt;Normal&lt;/w:View&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:SnapToGridInCell/&gt;    &lt;w:WrapTextWithPunct/&gt;    &lt;w:UseAsianBreakRules/&gt;    &lt;w:DontGrowAutofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" LatentStyleCount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;}&lt;/style&gt; &lt;![endif]--&gt;&lt;/div&gt;&lt;ul style="font-family: Verdana,sans-serif;"&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;N&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;D&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;W&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;N stands for Never, D for Daily, W for Weekly. Doing a mass update to all user records using the Apex Data Loader would set the option specified for every user.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;u&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;Object : User&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span lang="EN-GB"&gt;Field&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-GB"&gt;&lt;b&gt;UserPreferencesDisableAutoSubForFeeds&lt;/b&gt; - As the name suggests, disables automatically following records you own. Possible values are&lt;/span&gt;&lt;/span&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:View&gt;Normal&lt;/w:View&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:SnapToGridInCell/&gt;    &lt;w:WrapTextWithPunct/&gt;    &lt;w:UseAsianBreakRules/&gt;    &lt;w:DontGrowAutofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" LatentStyleCount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;}&lt;/style&gt; &lt;![endif]--&gt;&lt;/div&gt;&lt;ul style="font-family: Verdana,sans-serif;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;TRUE - disable auto follow&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;FALSE - enable auto follow&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;u&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;Object: &lt;/span&gt;&lt;span lang="EN-GB"&gt;CollaborationGroup&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:View&gt;Normal&lt;/w:View&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:SnapToGridInCell/&gt;    &lt;w:WrapTextWithPunct/&gt;    &lt;w:UseAsianBreakRules/&gt;    &lt;w:DontGrowAutofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" LatentStyleCount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;}&lt;/style&gt; &lt;![endif]--&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;This object is used to store Chatter groups. You may use the Apex Data Loader to mass create groups by inserting records into this object.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;Fields:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;Name : The name for this group&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;OWNERID : The ID of the User who owns this group.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;COLLABORATIONTYPE : Private or Public&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;&lt;u&gt;&lt;b&gt;Object: CollaborationGroupMember&lt;/b&gt;&lt;/u&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;This object is used to store the members for a group. You can mass add/remove members to Chatter groups using the Apex Data Loader.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;&lt;b&gt;&lt;span style="color: red;"&gt;NOTE:&lt;/span&gt;&lt;/b&gt; Salesforce automatically sends out an email notification to the person being added. To avoid this, turn OFF Chatter Emails , add members to the group and then TURN ON Chatter Emails.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;Fields:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;COLLABORATIONGROUPID: ID of the Chatter Group&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;MEMBERID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : ID of the User.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-GB"&gt;NOTIFICATIONFREQUENCY : N (Never) / D (Daily) / W (Weekly)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 177px;"&gt;&lt;col style="font-family: Verdana,sans-serif;" width="177"&gt;&lt;/col&gt;&lt;tbody&gt;&lt;tr height="17"&gt;   &lt;td height="17" style="height: 12.75pt; width: 133pt;" width="177"&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span lang="EN-GB" style="font-family: Verdana; font-size: 11pt;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-111804689029356837?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/111804689029356837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2010/11/chatter-rollout-guide.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/111804689029356837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/111804689029356837'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2010/11/chatter-rollout-guide.html' title='Chatter Rollout Guide'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_YExPk6W3YQg/TMkNkI1t8TI/AAAAAAAAATM/bKFdDSH-3Uc/s72-c/NewUI.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-1817825203133033508</id><published>2010-10-27T22:33:00.000-07:00</published><updated>2010-10-27T22:33:17.338-07:00</updated><title type='text'>Mass Update Profiles in Salesforce</title><content type='html'>We have 150+ profiles in our org. All we wanted to do was to turn off a TAB in all profiles. I thought it to be a simple task at first, but it was not.&lt;br /&gt;&lt;br /&gt;Even though you could use the ANT tool to retrieve and deploy Profiles, there are some components which you cannot access using the ANT tool. So, we finally ended up manually editing all Profiles. Anyhow, in this post i would be showing the steps to mass update Profiles. You may be successful depending on what you deploy or retrieve.&lt;br /&gt;&lt;br /&gt;STEP 1: First of all, you will need to have the ANT tool Installed. If you haven't installed it yet, you can have a look &lt;a href="http://wiki.developerforce.com/index.php/Migration_Tool_Guide"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;STEP 2: After having installed the ANT tool you will have to prepare the XML file to retrieve profile information. Here is a sample of the XML file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;Package xmlns="http://soap.sforce.com/2006/04/metadata"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;types&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;members&amp;gt;*&amp;lt;/members&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;CustomTab&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/types&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;types&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;members&amp;gt;*&amp;lt;/members&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;Profile&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/types&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;version&amp;gt;20.0&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/Package&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;STEP 3: Use the above XML for retrieveUnpackaged. The result will be two folders one for Profile and one for Tabs. The Profile Folder will contain one file for each profile and each file will contain the custom tab settings for that profile.&lt;br /&gt;&lt;br /&gt;To retrieve information other than TABS you may also use other types like "CustomApplication" to retrieve the security settings of Custom Applications for every profile. The more types you add, the more information is retrieved for every profile.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-1817825203133033508?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/1817825203133033508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2010/10/mass-update-profiles-in-salesforce.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1817825203133033508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1817825203133033508'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2010/10/mass-update-profiles-in-salesforce.html' title='Mass Update Profiles in Salesforce'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-2040144729358451365</id><published>2010-08-25T22:07:00.000-07:00</published><updated>2010-11-15T22:04:55.117-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='upload file'/><title type='text'>Read and Insert records from a CSV file - Using Visualforce</title><content type='html'>The Apex Data Loader is always there when you want to insert records into Salesforce from a CSV file. But, just in case if you don't want your users to install the Apex Data Loader and learn how to use it, then here is a simple example which tells you how to do the same using Visualforce.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://forcetreedemos-developer-edition.ap1.force.com/forcetreedemos"&gt;Click here&lt;/a&gt; to view the demo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Step 1:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Download the template from the DEMO URL above. Save the file in your desktop. Upload the file into Static Resources with the name "AccountUploadTemplate".&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Step 2:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Create an Apex Class named "FileUploader". Paste the code below and save it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;public class FileUploader &lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string nameFile{get;set;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Blob contentFile{get;set;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] filelines = new String[]{};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;Account&amp;gt; accstoupload;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Pagereference ReadFile()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nameFile=contentFile.toString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filelines = nameFile.split('\n');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; accstoupload = new List&amp;lt;Account&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (Integer i=1;i&amp;lt;filelines.size();i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] inputvalues = new String[]{};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inputvalues = filelines[i].split(',');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Account a = new Account();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.Name = inputvalues[0];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.ShippingStreet = inputvalues[1];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.ShippingCity = inputvalues[2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.ShippingState = inputvalues[3];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.ShippingPostalCode = inputvalues[4];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.ShippingCountry = inputvalues[5];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; accstoupload.add(a);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; insert accstoupload;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ApexPages.Message errormsg = new ApexPages.Message(ApexPages.severity.ERROR,'An error has occured. Please check the template or try again later');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ApexPages.addMessage(errormsg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public List&amp;lt;Account&amp;gt; getuploadedAccounts()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (accstoupload!= NULL)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (accstoupload.size() &amp;gt; 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return accstoupload;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Step 3:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Create a Visualforce Page named "UploadAccounts". Paste the code below and save it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page sidebar="false" controller="FileUploader"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;apex:form &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:sectionHeader title="Upload data from CSV file"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:pagemessages /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:pageBlock &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;center&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:inputFile value="{!contentFile}" filename="{!nameFile}" /&amp;gt; &amp;lt;apex:commandButton action="{!ReadFile}" value="Upload File" id="theButton" style="width:70px;"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt; &amp;lt;font color="red"&amp;gt; &amp;lt;b&amp;gt;Note: Please use the standard template to upload Accounts. &amp;lt;a href="{!URLFOR($Resource.AccountUploadTemplate)}" target="_blank"&amp;gt; Click here &amp;lt;/a&amp;gt; to download the template. &amp;lt;/b&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/center&amp;gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:pageblocktable value="{!uploadedAccounts}" var="acc" rendered="{!NOT(ISNULL(uploadedAccounts))}"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headerValue="Account Name"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputField value="{!acc.Name}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:column&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headerValue="Shipping Street"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputField value="{!acc.ShippingStreet}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:column&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headerValue="Shipping City"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputField value="{!acc.ShippingCity}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:column&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headerValue="Shipping State"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputField value="{!acc.ShippingState}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:column&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headerValue="Shipping Postal Code"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputField value="{!acc.ShippingPostalCode}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:column&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headerValue="Shipping Country"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputField value="{!acc.ShippingCountry}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:column&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:pageblocktable&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:pageBlock&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:form&amp;gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Screenshot:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_YExPk6W3YQg/THX1RwkGJ3I/AAAAAAAAAS8/P94cHoxBiSY/s1600/uploadfile.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_YExPk6W3YQg/THX1RwkGJ3I/AAAAAAAAAS8/P94cHoxBiSY/s320/uploadfile.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Some pointers:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You can use only the standard template. Because, that's how we have done the mapping to the columns in excel and the fields in Salesforce. You can modify the mapping and use your own template.&lt;/li&gt;&lt;li&gt;Allowing the user to choose his own mapping is possible i believe, but may be a bit complex.&lt;/li&gt;&lt;li&gt;Also, we use a CSV file. So, you may have to use additional criteria if your data values itself have a comma in them (For ex: Billing Street = 'Mumbai, India ') . This would cause problems because Mumbai and India would be considered as seperate values because of the comma in between them.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-2040144729358451365?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/2040144729358451365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2010/08/read-and-insert-records-from-csv-file.html#comment-form' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2040144729358451365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2040144729358451365'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2010/08/read-and-insert-records-from-csv-file.html' title='Read and Insert records from a CSV file - Using Visualforce'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_YExPk6W3YQg/THX1RwkGJ3I/AAAAAAAAAS8/P94cHoxBiSY/s72-c/uploadfile.JPG' height='72' width='72'/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-1727597326865836387</id><published>2010-08-20T03:51:00.000-07:00</published><updated>2010-08-20T04:01:04.089-07:00</updated><title type='text'>Force.com Programming for all - A Starter's guide</title><content type='html'>&lt;u&gt;&lt;b&gt;What is this about? &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;It has been a long time since i wrote an article which gave me enough satisfaction. As i was thinking, this topic came to my mind. People who are new to Salesforce find it difficult to understand the technical build-up of Salesforce, people already in Salesforce administration find it difficult to get into the programming side of Salesforce.&lt;br /&gt;&lt;br /&gt;It was the same with me too. But, later on after browsing through many blogs, guides and some good training sessions i think i am in a comfortable position now. Hence, this article is a composition of all that.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Salesforce.com Architecture:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;I have always seen myself getting fixed to a strict style of programming, even when there is an alternate easy way. So, please don't get fixed to such mindset (I've been too lazy to learn new methods). Before we get into programming further, its always good to understand the architecture. &lt;br /&gt;&lt;br /&gt;The architecture presented below is what i heard from people and my own assumptions (not guaranteed to be 100% true).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_YExPk6W3YQg/TGV2fRRKcGI/AAAAAAAAASs/qXRb8QOXgm4/s1600/sfarchitecture1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_YExPk6W3YQg/TGV2fRRKcGI/AAAAAAAAASs/qXRb8QOXgm4/s320/sfarchitecture1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;So, your Sobject tables are not actually database tables. All Standard and Custom objects are actually VIEWS of the actual table. This is the reason you cannot have a "Select *" on your SOQL Queries.&lt;br /&gt;&lt;br /&gt;Having said this, you may imagine how complex it would be to maintain such views, to maintain the field types, security etc etc. This is where &lt;b&gt;Salesforce excels&lt;/b&gt; and other on-demand CRM's lack.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;&amp;nbsp;Salesforce.com Point and Click Customization:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;If i remember correctly, until the mid of 2007 Visualforce did not exist and all Salesforce customization was done using point and click customizations like Workflows, object and field creation, page layouts, record types, approval processes etc. These do not require that you possess programming skills. The only part which required programming skills was Apex triggers, Apex Classes and S-controls. Even though these were powerful technologies, they were not used extensively until the advent of Visualforce.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Force.com Programming:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Developing applications using Visualforce, Apex Classes, Apex Triggers is collectively called Force.com programming.&amp;nbsp; Because of the greater reach of Salesforce.com and its extensibility, it has become necessary that Salesforce.com Administrator's learn force.com programming. This helps to keep with the rapid pace of technological growth.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Why was Visualforce Introduced:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;S-controls were mostly doing the job what Visualforce does now. S-controls were designed using HTML and Javascript. S-controls were used for building extensive customizations which were not available out-of-the-box.&lt;br /&gt;But S-controls had their own disadvantages.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;S-controls run on the client-side. Meaning that your code executes on your machine and not on Salesforce.com servers.&lt;/li&gt;&lt;li&gt;All your User Interface and the actions associated with them are not seperated. HTML (UI) and Javascript (actions) are in a single page. This lead&amp;nbsp; to complex pages which were hardly understandable by people other than the original developer.&lt;/li&gt;&lt;/ul&gt;So, to eliminate these disadvantages Visualforce was introduced. Visualforce (UI) and Apex Controllers (Actions) gave developers more clarity and the ability to distinguish the UI from the backend actions. This also promotes re-usability of code.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Visualforce:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;We will start with Visualforce, because as you start learning Visualforce you will learn Apex Classes as well.&lt;br /&gt;&lt;br /&gt;Visualforce is a Mark-up Langauage. Much like HTML. A Mark-up Language is one that is composed of tags. For ex: (&lt;code&gt;&amp;lt;html&amp;gt;&amp;lt;/html&amp;gt;)&lt;/code&gt;is a tag. Note that when you open a tag you will have to close it with the / sign. Some tags are self-closing meaning that they can be closed in the same tag in which they are open ( for ex: &lt;code&gt;&amp;lt;br/&amp;gt;&lt;/code&gt;)&lt;br /&gt;&lt;br /&gt;Visualforce defines the UI (User Interface) of your application. So, you may add tables, forms, text boxes, buttons, colors, styles etc using Visualforce tags. Let's start by creating a new visualforce page. Before that you will have to enable yourself for Visualforce development like shown below.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_YExPk6W3YQg/TGfpehkheAI/AAAAAAAAAS0/-JWjdfx6Z78/s1600/enablevfdevelopment.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ox="true" src="http://1.bp.blogspot.com/_YExPk6W3YQg/TGfpehkheAI/AAAAAAAAAS0/-JWjdfx6Z78/s320/enablevfdevelopment.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Go to your URL bar and type &lt;a href="http://yoursalesforceinstance.com/apex/myfirstvfpage"&gt;http://yoursalesforceinstance.com/apex/myfirstvfpage&lt;/a&gt; . (Note that &lt;span style="color: red;"&gt;&lt;b&gt;yoursalesforce instance&lt;/b&gt;&lt;/span&gt;&amp;nbsp;is specific for you like&lt;b&gt;&lt;span style="color: red;"&gt; cs3.salesforce&lt;/span&gt;&lt;/b&gt; or &lt;b&gt;&lt;span style="color: red;"&gt;na1.salesforce&lt;/span&gt;&lt;/b&gt; etc)&amp;nbsp;You will be shown a message that the page does not exist. Click n the create link. The page would be created and some sample code would be generated. Just delete the code and paste the code shown below in the editor.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Save&lt;/b&gt; the Page &lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page sidebar="false"&amp;gt;&lt;br /&gt;&amp;lt;apex:form&amp;gt;&lt;br /&gt;    &amp;lt;apex:sectionHeader title="My first Visualforce Page"/&amp;gt;&lt;br /&gt;    &amp;lt;apex:pageblock&amp;gt;&lt;br /&gt;        &amp;lt;apex:pageblocksection title="My first form" columns="1"&amp;gt;&lt;br /&gt;          &amp;lt;apex:pageblocksectionitem&amp;gt;&lt;br /&gt;            &amp;lt;apex:outputlabel value="Enter your name"/&amp;gt;&lt;br /&gt;            &amp;lt;apex:inputtext/&amp;gt;&lt;br /&gt;          &amp;lt;/apex:pageblocksectionitem&amp;gt;  &lt;br /&gt;        &amp;lt;/apex:pageblocksection&amp;gt;&lt;br /&gt;    &amp;lt;/apex:pageblock&amp;gt; &lt;br /&gt;&amp;lt;/apex:form&amp;gt;           &lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;You have seen too much of these examples rite. OK, let's see a video. Believe me, you wont be seeing the ordinary stuff. Even if you have experience on working with Visualforce, this video might teach you something new.&lt;br /&gt;&lt;br /&gt;Comments Welcome!!&lt;br /&gt;&lt;br /&gt;Note: The video quality is very poor. I would be soon uploading one with good quality.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;object height="405" width="500"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Wa1J51WLpm0?fs=1&amp;amp;hl=en_US&amp;amp;rel=0&amp;amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Wa1J51WLpm0?fs=1&amp;amp;hl=en_US&amp;amp;rel=0&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Part - TWO&lt;br /&gt;&lt;br /&gt;&lt;object height="405" width="500"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9BAT52_6C1I?fs=1&amp;amp;hl=en_US&amp;amp;rel=0&amp;amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/9BAT52_6C1I?fs=1&amp;amp;hl=en_US&amp;amp;rel=0&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-1727597326865836387?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/1727597326865836387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2010/08/forcecom-programming-for-all-starters.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1727597326865836387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1727597326865836387'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2010/08/forcecom-programming-for-all-starters.html' title='Force.com Programming for all - A Starter&apos;s guide'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_YExPk6W3YQg/TGV2fRRKcGI/AAAAAAAAASs/qXRb8QOXgm4/s72-c/sfarchitecture1.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-5253113074011049749</id><published>2010-07-27T23:23:00.000-07:00</published><updated>2010-07-27T23:23:45.251-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='duplicate'/><category scheme='http://www.blogger.com/atom/ns#' term='unique'/><title type='text'>Unique Field combination in Salesforce</title><content type='html'>While creating fields in any object you have the option of specifying the field as UNIQUE. This means that the field can only have unique values and is meant for eradicating duplicates.&lt;br /&gt;&lt;br /&gt;But, mostly we need to have a combination of fields to determine a unique record. For ex, say that "Account Name" and "Billing Country" together determine a unique record. In such a case, you cannot make the "Account Name" as well as the "Billing Country" fields unique, since the combination of these two fields is only unique and not they both separately. &lt;br /&gt;&lt;br /&gt;In situations like this, we mostly write a trigger. But, there is a more easy and out-of-the-box functionality available.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;STEP 1: &lt;/b&gt;&lt;/span&gt;Create a new field in the account object called "AccNameBillingAdd" with the field type "Text".&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_YExPk6W3YQg/TE_EhGMLpaI/AAAAAAAAAR0/Q6pEvKxZzis/s1600/Uniquefields1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_YExPk6W3YQg/TE_EhGMLpaI/AAAAAAAAAR0/Q6pEvKxZzis/s320/Uniquefields1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Make the field invisible to all profiles, of course the "System Administrator" would still have access to this field.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_YExPk6W3YQg/TE_Exrq_8aI/AAAAAAAAAR8/KsJhh11gUv8/s1600/Uniquefields2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_YExPk6W3YQg/TE_Exrq_8aI/AAAAAAAAAR8/KsJhh11gUv8/s320/Uniquefields2.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Do not add the field to any page layout.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_YExPk6W3YQg/TE_E9gk2kwI/AAAAAAAAASE/z6JywSARD2Y/s1600/Uniquefields3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_YExPk6W3YQg/TE_E9gk2kwI/AAAAAAAAASE/z6JywSARD2Y/s320/Uniquefields3.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;STEP 2:&amp;nbsp; &lt;/b&gt;Create a new Workflow rule on the "Account" object.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_YExPk6W3YQg/TE_H9BKeQ3I/AAAAAAAAASM/YuIcfTFQL5g/s1600/Uniquefields4.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_YExPk6W3YQg/TE_H9BKeQ3I/AAAAAAAAASM/YuIcfTFQL5g/s320/Uniquefields4.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Create a "Field Update" for the workflow.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_YExPk6W3YQg/TE_KTs5Xx2I/AAAAAAAAASU/_cTn-lOqJY8/s1600/Uniquefields5.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_YExPk6W3YQg/TE_KTs5Xx2I/AAAAAAAAASU/_cTn-lOqJY8/s320/Uniquefields5.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;Do not forget to "Activate" the workflow.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;STEP 3:&lt;/b&gt;&amp;nbsp; See it in action, by creating two account's with the same Name and Billing Country. While you try to save the second one, you will be shown an error message as below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_YExPk6W3YQg/TE_MdctJv-I/AAAAAAAAASc/oherZlWjI_Y/s1600/Uniquefields6.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_YExPk6W3YQg/TE_MdctJv-I/AAAAAAAAASc/oherZlWjI_Y/s320/Uniquefields6.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The error message is meaningless, do let me know if you have any suggestions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-5253113074011049749?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/5253113074011049749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2010/07/unique-field-combination-in-salesforce.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/5253113074011049749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/5253113074011049749'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2010/07/unique-field-combination-in-salesforce.html' title='Unique Field combination in Salesforce'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_YExPk6W3YQg/TE_EhGMLpaI/AAAAAAAAAR0/Q6pEvKxZzis/s72-c/Uniquefields1.JPG' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-7438122643710879283</id><published>2010-06-30T22:25:00.000-07:00</published><updated>2010-07-26T09:36:34.069-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visualforce UI issue'/><title type='text'>Debugging Visualforce Pages with custom Styles for UI compatibility</title><content type='html'>I have been working on the force.com platform for nearly three years now, and the only problem which drives me nuts is when i have to deal with UI (User Interface) issues.&lt;br /&gt;&lt;br /&gt;I have to admit that it really looks beautiful when you can have your own custom CSS for your visualforce pages with wonderful styles. But, when it comes to fixing UI issues i actually spend a lot of time to find the bug. Hence, in this article i have put together the methodologies i use to overcome them. This saves lot of your time (GUARANTEED).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;The " !important " keyword: &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;!important - meaning - DONT take what is in the CSS. take what i tell here. &lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Let's jump straight. Let's say that you have a "div" with the name "styleme" and the defenition is as follows&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;.styleme&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; margin:o;&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;This implies that there should be no space between the margin of your browser (actually the parent div) and the contents in this div.&lt;br /&gt;And, let's say that you have a visualforce page like this&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page&amp;gt;&lt;br /&gt;&amp;lt;style&amp;gt;&lt;br /&gt;.styleme&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; margin:o;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class="styleme"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hi!!! I am styled!!!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Just assume that this works fine in FireFox and when you view the same page in Internet Explorer there is a huge gap from the margin. Adding a simple keyword makes it to work across all browsers. Your visualforce page would now be like&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page&amp;gt;&lt;br /&gt;&amp;lt;style&amp;gt;&lt;br /&gt;.styleme&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; margin:o !important;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class="styleme"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hi!!! I am styled!!!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;This is just an example of how to use this keyword. Real scenarios may arise when you use your own CSS in conjunction with the Standard CSS of Salesforce. In such cases this keyword helps a lot.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Other uses of this keyword:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;One other, major use of this keyword is when you want to override the Standard Styles of Salesforce.Say for example that want to override the color of the Page Block Header (this is transparent by default). The following code gives a red color to the header.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page&amp;gt;&lt;br /&gt;&amp;lt;style&amp;gt;&lt;br /&gt;.pbHeader&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; background-color: RED !important;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:pageblock&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:sectionheader title="My custom Header"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:pageblock&amp;gt; &lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;FIREBUG &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Firebug is a great plugin for Firefox which comes in handy for debugging your pages. It helps you identify the associated style classes very easily.&lt;br /&gt;You can download it from here .. &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1843/"&gt;Click here&lt;/a&gt;&lt;br /&gt;It is using this plugin that i found that the styleclass for the pageblock header was 'pbHeader'.&lt;br /&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;How to use this???&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;When you open any normal salesforce page, click on the "bug" icon at the rightmost bottom of the page.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_YExPk6W3YQg/TCwifZN5Y_I/AAAAAAAAAPI/ipi08a3cXT8/s1600/Firebug1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_YExPk6W3YQg/TCwifZN5Y_I/AAAAAAAAAPI/ipi08a3cXT8/s320/Firebug1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Then click on the select tool, like this&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_YExPk6W3YQg/TCwj5OBC-1I/AAAAAAAAAPQ/eisQcalMHRs/s1600/Firebug2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_YExPk6W3YQg/TCwj5OBC-1I/AAAAAAAAAPQ/eisQcalMHRs/s320/Firebug2.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;And then select the Element of which you want to know the styleclass.&lt;br /&gt;Page Block Header in our case.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_YExPk6W3YQg/TCwli-JrGJI/AAAAAAAAAPY/5NoHATwmAjc/s1600/Firebug3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_YExPk6W3YQg/TCwli-JrGJI/AAAAAAAAAPY/5NoHATwmAjc/s320/Firebug3.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;When you use this for Visualforce pages and have the "development mode" on your user page turned "on", make sure to remove the page editor by replacing your url with&lt;br /&gt;&lt;br /&gt;htttp://cs1.salesforce.com/apex/samplevfpage?&lt;b style="color: orange;"&gt;core.apexpages.devmode.url=1&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This parameter removes the Page Editor and you get the clean CSS and HTML to analyze using FireBug.&lt;br /&gt;&lt;br /&gt;Comments and Questions welcome!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-7438122643710879283?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/7438122643710879283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2010/06/debugging-visualforce-pages-with-custom.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7438122643710879283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7438122643710879283'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2010/06/debugging-visualforce-pages-with-custom.html' title='Debugging Visualforce Pages with custom Styles for UI compatibility'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_YExPk6W3YQg/TCwifZN5Y_I/AAAAAAAAAPI/ipi08a3cXT8/s72-c/Firebug1.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-2546869498336746057</id><published>2010-06-23T03:14:00.000-07:00</published><updated>2010-06-23T03:14:26.042-07:00</updated><title type='text'>One year down the lane</title><content type='html'>A year back, this same day i started this blog. I was not serious at blogging, to be frank. But, i was really surprised by the support and encouragement that every visitor to this blog has given me. Your encouragement keeps me going and drives me to write more articles...&lt;br /&gt;&lt;br /&gt;Thank you all !!!!!&lt;br /&gt;&lt;br /&gt;Keep visiting!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-2546869498336746057?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/2546869498336746057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2010/06/one-year-down-lane.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2546869498336746057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2546869498336746057'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2010/06/one-year-down-lane.html' title='One year down the lane'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-338078935941109333</id><published>2010-06-19T10:59:00.000-07:00</published><updated>2010-06-20T06:16:36.936-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HTTP callout'/><title type='text'>HTTP Callout from Apex Class - A Simple Example</title><content type='html'>Here is a simple example of a HTTP callout... I guess it does not need much explanation&lt;br /&gt;&lt;br /&gt;Do write to me in case you need further clarification....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;public class UploadFile_DifferentOrg {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public UploadFile_DifferentOrg(ApexPages.StandardController controller)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String ErrorMessage;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Login()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ErrorMessage='';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final string baseUrl = 'https://login.salesforce.com/'; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final string username = 'test@test.com'; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final string password = 'test@123';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Http h = new Http();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpRequest req = new HttpRequest();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; req.setMethod('GET');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; req.setEndpoint(baseUrl + '?loginType=&amp;amp;un='+username+'&amp;amp;pw='+password);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpResponse res = h.send(req);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; req.setEndpoint(baseUrl + 'apex/UploadFile_DifferentOrg');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; res = h.send(req);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (res.getBody().indexOf('success=true')&amp;gt;-1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; system.debug('Success');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-338078935941109333?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/338078935941109333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2010/06/http-callout-from-apex-class-simple.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/338078935941109333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/338078935941109333'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2010/06/http-callout-from-apex-class-simple.html' title='HTTP Callout from Apex Class - A Simple Example'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-1446664777338937840</id><published>2010-06-19T04:47:00.000-07:00</published><updated>2010-06-19T04:47:26.144-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualforce pass parameters'/><title type='text'>Visualforce Popup Window - pass parameters</title><content type='html'>Here is a small example of how to pass values from your popup window to your parent window...........&lt;br /&gt;This example uses javascript....&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Parent Page: (popupparent)&lt;/b&gt;&lt;br /&gt;Name this visualforce page as "popupparent"&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page showheader="false" standardStylesheets="false"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;form method="post" name="f1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table&amp;gt; &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td &amp;gt;&amp;lt;font face="Verdana"&amp;gt;Your Name&amp;lt;/font&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type="text" name="p_name"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href="javascript:void(0);" NAME="My Window Name" title=" My title here " onClick=window.open("/apex/popupchild?core.apexpages.devmode.url=1","Ratting","width=550,height=170,left=150,top=200,toolbar=1,status=1,"); &amp;gt;Click here to open the child window&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/table&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;lt;/form&amp;gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Child(Pop-up) Window:&lt;/b&gt;&lt;br /&gt;Name this visualforce page as "popupchild"&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page showheader="false" &amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;lt;script langauge="javascript"&amp;gt;&lt;br /&gt;function post_value(){&lt;br /&gt;opener.document.f1.p_name.value = document.frm.c_name.value;&lt;br /&gt;self.close();&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;lt;title&amp;gt;(Type a title for your page here)&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;lt;body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#800080" alink="#ff0000"&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;lt;form name="frm"&amp;gt;&lt;br /&gt;&amp;lt;table &amp;gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&amp;lt;td align="center"&amp;gt; Your name&amp;lt;input type="text" name="c_name" size="12" value="test"&amp;gt; &amp;lt;input type="button" value="Submit" onclick="post_value();"&amp;gt;&lt;br /&gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-1446664777338937840?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/1446664777338937840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2010/06/visualforce-popup-window-pass.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1446664777338937840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1446664777338937840'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2010/06/visualforce-popup-window-pass.html' title='Visualforce Popup Window - pass parameters'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-2079681301687366781</id><published>2010-06-03T04:47:00.000-07:00</published><updated>2010-06-03T04:47:56.024-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chatter'/><title type='text'>What is Chatter all about?? The Pros and Cons</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_YExPk6W3YQg/TAeL-u1uoJI/AAAAAAAAAO4/YLnIZJJc75s/s1600/salesforcecom-chatter.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="140" src="http://2.bp.blogspot.com/_YExPk6W3YQg/TAeL-u1uoJI/AAAAAAAAAO4/YLnIZJJc75s/s200/salesforcecom-chatter.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I recently had to do an analysis about chatter as my customer wanted it to be enabled and i thought it would be worth sharing it here.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is Chatter?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Before we start to analyze the advantages and disadvantages of chatter let me give you a sense of what chatter is.&lt;br /&gt;&lt;br /&gt;Chatter is like a social networking website (twittter, orkut, facebook etc) with the only difference that the users of Chatter are the people within a company (ie Salesforce.com users). Chatter is an application which allows you to connect and share information with your colleagues in real time. Chatter when used efficiently could lead to excellent Service and Sales within your company.&lt;br /&gt;&lt;br /&gt;As an example, let's say that you are using the "Call Center" application of Salesforce. A customer of yours has raised a case and it is being taken care of by your customer service representative. If the representative does not know a solution, he can simply write a post in chatter asking for help. His colleagues could help him quickly by replying to the post. This would lead to quicker customer service.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;More Information about Chatter:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can find more information, code recipes, and an excellent custom application called "Chatter Bubbles". &lt;a href="http://developer.force.com/chatter"&gt;click here&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;What you can't find in the above link is obviously the disadvantages. So, let's see it here.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Features not available as of now : &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Chatter could be enabled for the entire organization only. So, if you say that you want only a had full of users to use Chatter then that's not possible.&lt;/li&gt;&lt;li&gt;The profile page (Profile tab) of every user is not customizable. When you login to Salesforce, at the right topmost corner you will see your &lt;b&gt;Name&lt;/b&gt; next to the &lt;b&gt;Setup&lt;/b&gt; link. When you click on this link you will be shown your profile page, which displays the people you follow, the people who follow you etc. This page is not customizable.&lt;/li&gt;&lt;li&gt;Chatter email notifications are predefined. You cannot customize them.&lt;/li&gt;&lt;li&gt;Anybody can follow anybody. NO RESTRICTIONS.&lt;/li&gt;&lt;li&gt;You can see the Show/Hide Chatter button on the home page as well as on the detail page of any record (the associated object should be enabled for chatter). You cannot remove it from the home page as well as from the detail page of records. The Chatter gadget is not associated with page layout and hence cannot be removed.&lt;/li&gt;&lt;/ul&gt;I hope that these will be addressed soon by salesforce.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Some Quick Tips:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Get registered for a free developer preview - &lt;a href="http://developer.force.com/chatter"&gt;Click here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Chatter Email Settings:&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_YExPk6W3YQg/TAeUDuxnJbI/AAAAAAAAAPA/mwGmyrUSjZ4/s1600/chatteremailsettings.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_YExPk6W3YQg/TAeUDuxnJbI/AAAAAAAAAPA/mwGmyrUSjZ4/s320/chatteremailsettings.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Chatter custom feeds:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can write triggers to create custom feeds. All objects related to chatter are exposed through the API and hence you can play around with them. Here is a small example&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;trigger customfeeds on Opportunity (after update) &lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for ( Opportunity newopp: Trigger.new) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Opportunity oldopp = Trigger.oldMap.get(newopp.id);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (newopp.Probability != oldopp.Probability)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FeedPost fpost = new FeedPost();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fpost.ParentId = newopp.Id; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fpost.Body = ' - Probability has changed from '+oldopp.Probability +'%'+ ' to '+newopp.Probability +'%';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; insert fpost;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-2079681301687366781?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/2079681301687366781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2010/06/what-is-chatter-all-about-pros-and-cons.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2079681301687366781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2079681301687366781'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2010/06/what-is-chatter-all-about-pros-and-cons.html' title='What is Chatter all about?? The Pros and Cons'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_YExPk6W3YQg/TAeL-u1uoJI/AAAAAAAAAO4/YLnIZJJc75s/s72-c/salesforcecom-chatter.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-1900918517080302703</id><published>2010-04-23T06:09:00.000-07:00</published><updated>2010-04-23T06:13:36.681-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nested table'/><category scheme='http://www.blogger.com/atom/ns#' term='expand/collapse'/><title type='text'>Expand / Collapse Pageblock table columns in Visualforce</title><content type='html'>As a continuation to my previous post of&amp;nbsp; "Displaying nested PageBlock tables", in this article i would be explaining the steps to expand/collapse your nested table. To read the previous article &lt;a href="http://www.forcetree.com/2010/04/nested-tables-and-nested-queries-in.html"&gt;Click here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Why do this???&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Mainly, to improve readability and user friendliness. Secondly, by doing so you better understand the power of Javascript combined with Visualforce.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You will need two images, one for expand and the other for collapse. Below are the two images. Right-click the images and save it to your machine.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_YExPk6W3YQg/S9GS5Mx6h8I/AAAAAAAAANI/MZ5eQdaw9xI/s1600/Plus_Image.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_YExPk6W3YQg/S9GS5Mx6h8I/AAAAAAAAANI/MZ5eQdaw9xI/s320/Plus_Image.gif" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_YExPk6W3YQg/S9GS9TVwmFI/AAAAAAAAANQ/wYZVfjLN3cg/s1600/Minus_image.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_YExPk6W3YQg/S9GS9TVwmFI/AAAAAAAAANQ/wYZVfjLN3cg/s320/Minus_image.gif" /&gt;&lt;/a&gt;&lt;/div&gt;- Upload this image into Static Resource as Plus_Image&lt;br /&gt;&lt;br /&gt;- Upload this image into Static Resource as Minus_Image&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Upload these files into Static Resource.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Create an Apex Class named "nestedqueryexample". Paste the following code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;public class nestedqueryexample&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; public List&amp;lt;Account&amp;gt; getaccsandtmember()&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;Account&amp;gt; accounts = [Select Id,(Select TeamMemberRole, User.Name From Account.AccountTeamMembers), Name, BillingCountry from Account];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return accounts;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Step 4:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Create a Visualforce Page named "nestedqueryexample". Paste the following code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page tabstyle="Account" controller="nestedqueryexample" showheader="false"&amp;gt;&lt;br /&gt;&amp;lt;script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function switchMenu(obj,obj1,obj2) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var el = document.getElementById(obj);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( el.style.display != 'none' ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; el.style.display = 'none';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; el.style.display = '';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var e2 = document.getElementById(obj1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( e2.style.display != 'none' ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e2.style.display = 'none';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e2.style.display = '';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var e3 = document.getElementById(obj2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( e2.style.display != 'none' ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e3.style.display = 'none';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e3.style.display = '';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:pageblock &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:pageblocktable value="{!accsandtmember}"&amp;nbsp; var="accdet"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:facet name="header"&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Team Members&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:facet&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputpanel id="plusimage"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:image url="{!$Resource.Plus_Image}" onclick="switchMenu('{!$Component.inlinetablesec}','{!$Component.minusimage}','{!$Component.plusimage}')" title="Expand - Team Member's"/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:outputpanel&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputpanel id="minusimage" style="display:none;"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:image url="{!$Resource.Minus_image}" onclick="switchMenu('{!$Component.inlinetablesec}','{!$Component.plusimage}','{!$Component.minusimage}')" title="Collapse - Team Member's"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:outputpanel&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputpanel id="inlinetablesec" style="display:none;"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:variable value="{!0}" var="rowNum"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:repeat var="count" value="{!accdet.AccountTeamMembers}"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:variable var="rowNum" value="{!rowNum+1}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:repeat&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputText rendered="{!rowNum=0}"&amp;gt;&amp;nbsp; No Team Members&amp;nbsp; &amp;lt;/apex:outputText&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:pageblocktable value="{!accdet.AccountTeamMembers}" var="tm" rendered="{!rowNum&amp;gt;0}"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headerValue="Team Member"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputfield value="{!tm.User.Name}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:column&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headerValue="Role"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputfield value="{!tm.TeamMemberRole}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:column&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:pageblocktable&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:outputpanel&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:column&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headervalue="Account Name"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputtext value="{!accdet.Name}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:column&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headervalue="Billing Country"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputtext value="{!accdet.BillingCountry}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:column&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:pageblocktable&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:pageblock&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Code Explained:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In this example, we have used a Javascript function named "switchMenu". In our visualforce Page, we have placed the nested pageblocktable, the expand image and the collapse image into three apex:outputpanel's.&lt;br /&gt;&lt;br /&gt;When the expand or collapse image is clicked when call the Javascript function which displays the necessary outputpanel's and hides the ones that are not required.&lt;br /&gt;&lt;br /&gt;If you note carefully, we have passed parameters to the javascript function using &lt;b&gt;$Component&lt;/b&gt; variable. Components inside a table or repeat tag are preappended with an integer value to identify them uniquely.&lt;br /&gt;&lt;br /&gt;For example, our nested pageblocktable has an id "inlinetablesec". So, for the first row the id of this table would be 0:inlinetablesec and for the next 1:inlinetablesec and so on. This is done automatically by Salesforce, and we make use of this in our javascript function to display/hide the respective tables.&lt;br /&gt;&lt;br /&gt;Hope this article helps you in some way. Write to me in case you have any difficulties.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Screenshot:&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_YExPk6W3YQg/S9Gbkmbs8NI/AAAAAAAAANY/BkcLEuMLb_o/s1600/expandcollapse.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="382" src="http://2.bp.blogspot.com/_YExPk6W3YQg/S9Gbkmbs8NI/AAAAAAAAANY/BkcLEuMLb_o/s640/expandcollapse.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-1900918517080302703?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/1900918517080302703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2010/04/expand-collapse-pageblock-table-columns.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1900918517080302703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1900918517080302703'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2010/04/expand-collapse-pageblock-table-columns.html' title='Expand / Collapse Pageblock table columns in Visualforce'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_YExPk6W3YQg/S9GS5Mx6h8I/AAAAAAAAANI/MZ5eQdaw9xI/s72-c/Plus_Image.gif' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-7195249538441903737</id><published>2010-04-16T09:27:00.000-07:00</published><updated>2010-04-23T06:13:06.437-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualforce nested query'/><category scheme='http://www.blogger.com/atom/ns#' term='visualforce nested table'/><title type='text'>Nested Tables and Nested Queries in Visualforce - An Example</title><content type='html'>I recently had to work on a requirement which included nested queries and nested tables. Thanks to the forums and the developer guides, i got the information from a couple of posts and articles.&lt;br /&gt;&lt;br /&gt;This article is just a consolidation of information spread over many places.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Scenario:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I will have to display a list of Accounts. Under each account i will have to display the associated Account Team Members.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;SOQL Query:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The SOQL Query to retrieve both the Account Details as well as the Account Team Member details will be as follows..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;Select Id,(Select TeamMemberRole, User.Name From Account.AccountTeamMembers), Name, BillingCountry from Account&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;This is what is called a nested query which is quite obvious from the fact that you can see two "Select" statements in a single query..&lt;br /&gt;&lt;br /&gt;Now, let us create a simple visualforce page to display the query results.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Visualforce Page:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page tabstyle="Account" controller="nestedqueryexample"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:pageblock&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:pageblocktable value="{!accsandtmember}"&amp;nbsp; var="accdet"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:facet name="header"&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Team Members&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:facet&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:pageblocktable value="{!accdet.AccountTeamMembers}" var="tm"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headerValue="Team Member"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputfield value="{!tm.User.Name}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:column&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headerValue="Role"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputfield value="{!tm.TeamMemberRole}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:column&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:pageblocktable&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:column&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headervalue="Account Name"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputtext value="{!accdet.Name}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:column&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:column headervalue="Billing Country"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;apex:outputtext value="{!accdet.BillingCountry}"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:column&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:pageblocktable&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/apex:pageblock&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&amp;nbsp; &lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Controller (Apex Class):&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&lt;br /&gt;public class nestedqueryexample&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; public List&amp;lt;Account&amp;gt; getaccsandtmember()&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;Account&amp;gt; accounts = [Select Id,(Select TeamMemberRole, User.Name From Account.AccountTeamMembers), Name, BillingCountry from Account];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return accounts;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Your final output will look like this.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_YExPk6W3YQg/S9GQS-qmEwI/AAAAAAAAANA/uPnz2eNxyYg/s1600/nestedtable.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_YExPk6W3YQg/S9GQS-qmEwI/AAAAAAAAANA/uPnz2eNxyYg/s320/nestedtable.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;Looks messy rite?. We will add a expand/collapse button for the nested table to make it look clean.&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;a href="http://www.forcetree.com/2010/04/expand-collapse-pageblock-table-columns.html"&gt;Learn More - Click here&lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-7195249538441903737?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/7195249538441903737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2010/04/nested-tables-and-nested-queries-in.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7195249538441903737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7195249538441903737'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2010/04/nested-tables-and-nested-queries-in.html' title='Nested Tables and Nested Queries in Visualforce - An Example'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_YExPk6W3YQg/S9GQS-qmEwI/AAAAAAAAANA/uPnz2eNxyYg/s72-c/nestedtable.JPG' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-9028175333660324243</id><published>2010-02-28T22:43:00.000-08:00</published><updated>2010-02-28T22:46:54.884-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Salesforce.com new UI'/><title type='text'>The New User Interface for Salesforce.com - Cool !!!!!!</title><content type='html'>I just recently enabled the new User Interface of Salesforce.com and found it to be really interesting...&lt;br /&gt;&lt;br /&gt;Here is how you can enable it in your sandbox&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Login to your sandbox. Navigate to Setup -&amp;gt; App Setup -&amp;gt; User Interface . You can then enable the option as shown in the picture below.&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_YExPk6W3YQg/S4teyOYQW9I/AAAAAAAAAJ0/N0beUg5QTmg/s1600-h/New+UI+Theme+enable.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_YExPk6W3YQg/S4teyOYQW9I/AAAAAAAAAJ0/N0beUg5QTmg/s320/New+UI+Theme+enable.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;The new theme is supported only in the latest version of&amp;nbsp; browsers like Firefox, Safari and Internet Explorer&lt;/span&gt; . &lt;/b&gt;You will get a popup window displaying this message.&lt;br /&gt;&lt;br /&gt;Now click on any tab to see the new User Interface.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Setup&lt;/b&gt; ,however has the old theme. Below are some screen shots to make you go crazy!!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_YExPk6W3YQg/S4tglrSBaUI/AAAAAAAAAJ8/mV7VXds1llw/s1600-h/New+UI+-OPP.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_YExPk6W3YQg/S4tglrSBaUI/AAAAAAAAAJ8/mV7VXds1llw/s320/New+UI+-OPP.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Here is a look of a Visualforce Page&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_YExPk6W3YQg/S4thJBYN9dI/AAAAAAAAAKE/FeqAfQPs5lE/s1600-h/New+UI+-VF.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_YExPk6W3YQg/S4thJBYN9dI/AAAAAAAAAKE/FeqAfQPs5lE/s320/New+UI+-VF.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;And Report looks like this&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_YExPk6W3YQg/S4th0_9RafI/AAAAAAAAAKM/Q6zX5WZfmMo/s1600-h/New+UI+-+Report.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_YExPk6W3YQg/S4th0_9RafI/AAAAAAAAAKM/Q6zX5WZfmMo/s320/New+UI+-+Report.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I think most of you would like this... Doesn't it look cool??&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-9028175333660324243?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/9028175333660324243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2010/02/new-user-interface-for-salesforcecom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/9028175333660324243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/9028175333660324243'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2010/02/new-user-interface-for-salesforcecom.html' title='The New User Interface for Salesforce.com - Cool !!!!!!'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_YExPk6W3YQg/S4teyOYQW9I/AAAAAAAAAJ0/N0beUg5QTmg/s72-c/New+UI+Theme+enable.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-7367820743591822474</id><published>2010-01-27T06:51:00.000-08:00</published><updated>2010-01-27T06:52:10.966-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Spring&apos;10'/><title type='text'>Salesforce.com Spring '10 - Some features you really need to check out</title><content type='html'>Spring'10 release is just around the corner and here are some features that i found really cool !!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Authenticated Force.com Sites:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The only way of authenticating a Force.com site was by using Portal licenses or by writing your own custom logic to validate logins (I personally felt this was a major drawback). But now, with Spring'10 you have a special user type called "&lt;span id="j_id0:j_id1:j_id24"&gt;&lt;span id="j_id0:j_id1:j_id24:j_id25:j_id188:j_id189:0:j_id190"&gt;Authenticated Web Site User" with which you can authenticate your force.com site users. So, no more purchasing licenses and i believe this feature is free.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="j_id0:j_id1:j_id24"&gt;&lt;span id="j_id0:j_id1:j_id24:j_id25:j_id188:j_id189:0:j_id190"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span id="j_id0:j_id1:j_id24"&gt;&lt;span id="j_id0:j_id1:j_id24:j_id25:j_id188:j_id189:0:j_id190"&gt;Code Scheduler:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span id="j_id0:j_id1:j_id24"&gt;&lt;span id="j_id0:j_id1:j_id24:j_id25:j_id188:j_id189:0:j_id190"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="j_id0:j_id1:j_id24"&gt;&lt;span id="j_id0:j_id1:j_id24:j_id25:j_id188:j_id189:0:j_id190"&gt;Your Apex Code can now be scheduled to run automatically at regular intrevals. This feature is similar to Cronkit(Appexchange), only difference is that it now comes in-buil in Salesforce.com with no package installations.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="j_id0:j_id1:j_id24"&gt;&lt;span id="j_id0:j_id1:j_id24:j_id25:j_id188:j_id189:0:j_id190"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span id="j_id0:j_id1:j_id24"&gt;&lt;span id="j_id0:j_id1:j_id24:j_id25:j_id188:j_id189:0:j_id190"&gt;Cool User Icon:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span id="j_id0:j_id1:j_id24"&gt;&lt;span id="j_id0:j_id1:j_id24:j_id25:j_id188:j_id189:0:j_id190"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="j_id0:j_id1:j_id24"&gt;&lt;span id="j_id0:j_id1:j_id24:j_id25:j_id188:j_id189:0:j_id190"&gt;I found this new Image for User pretty cool!! :-)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="j_id0:j_id1:j_id24"&gt;&lt;span id="j_id0:j_id1:j_id24:j_id25:j_id188:j_id189:0:j_id190"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="j_id0:j_id1:j_id24"&gt;&lt;span id="j_id0:j_id1:j_id24:j_id25:j_id188:j_id189:0:j_id190"&gt;Read the entire official release preview guide here - &lt;a href="http://www.salesforce.com/community/assets/docs/Spring10_ReleasePreview.pdf"&gt;Click here&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-7367820743591822474?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/7367820743591822474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2010/01/salesforcecom-spring-10-some-features.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7367820743591822474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7367820743591822474'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2010/01/salesforcecom-spring-10-some-features.html' title='Salesforce.com Spring &apos;10 - Some features you really need to check out'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-530054281662715958</id><published>2009-12-15T01:51:00.000-08:00</published><updated>2011-09-16T15:33:37.742-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='homepage component'/><category scheme='http://www.blogger.com/atom/ns#' term='visualforce in homepage'/><title type='text'>Adding a Visualforce Page to the Home Page Layout</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Update: Specify the height and width for the iframe in pixels, as % does not work. &lt;br /&gt;&lt;br /&gt;Step 1:&lt;br /&gt;&lt;br /&gt;Create a Visualforce Page. We create a simple static table with some styles to give an appealing look..&lt;br /&gt;&lt;br /&gt;Name the Page as "&lt;span style="font-weight: bold;"&gt;homelogo&lt;/span&gt;"&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page showheader="false" &amp;gt;&lt;br /&gt;&amp;lt;style&amp;gt;&lt;br /&gt;table.fancy {&lt;br /&gt;margin: 1em 1em 1em 0;&lt;br /&gt;background: whitesmoke;&lt;br /&gt;border-collapse: collapse;&lt;br /&gt;}&lt;br /&gt;table.fancy tr:hover {&lt;br /&gt;background: lightsteelblue !important;&lt;br /&gt;}&lt;br /&gt;table.fancy th, table.fancy td {&lt;br /&gt;border: 1px silver solid;&lt;br /&gt;padding: 0.2em;&lt;br /&gt;}&lt;br /&gt;table.fancy th {&lt;br /&gt;background: gainsboro;&lt;br /&gt;text-align: left;&lt;br /&gt;}&lt;br /&gt;table.fancy caption {&lt;br /&gt;margin-left: inherit;&lt;br /&gt;margin-right: inherit;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&amp;lt;table class="fancy"&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;th&amp;gt;Key&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Value&amp;lt;/th&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;ACT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Australian Capital Territory&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;NSW&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;New South Wales&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;NT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Northern Territory&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;QLD&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Queensland&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;SA&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;South Australia&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;TAS&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Tasmania&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;VIC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Victoria&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;WA&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Western Australia&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Step 2:&lt;br /&gt;&lt;br /&gt;Create a new HomePage component.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_YExPk6W3YQg/SydzvxAJDoI/AAAAAAAAAHE/Mpo3uC8GLnc/s1600-h/homepagecomponent.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5415424341381287554" src="http://2.bp.blogspot.com/_YExPk6W3YQg/SydzvxAJDoI/AAAAAAAAAHE/Mpo3uC8GLnc/s400/homepagecomponent.JPG" style="cursor: pointer; height: 189px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 3:&lt;br /&gt;&lt;br /&gt;Give a name for your component and select"HTML Area" option.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_YExPk6W3YQg/Syd1QlJhMBI/AAAAAAAAAHk/jzscOHmfbpY/s1600-h/newcomponent.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5415426004646703122" src="http://1.bp.blogspot.com/_YExPk6W3YQg/Syd1QlJhMBI/AAAAAAAAAHk/jzscOHmfbpY/s400/newcomponent.JPG" style="cursor: pointer; height: 171px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 4:&lt;br /&gt;&lt;br /&gt;Check the "Show HTML" option in the rightmost corner.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_YExPk6W3YQg/Syd1Q-wav1I/AAAAAAAAAHs/RvyyPKNI6Wc/s1600-h/newcomponentstep2.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5415426011520745298" src="http://3.bp.blogspot.com/_YExPk6W3YQg/Syd1Q-wav1I/AAAAAAAAAHs/RvyyPKNI6Wc/s400/newcomponentstep2.JPG" style="cursor: pointer; height: 228px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 5:&lt;br /&gt;&lt;br /&gt;Type the following code in the editor window&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;br&amp;gt;&amp;lt;iframe src="/apex/homelogo?core.apexpages.devmode.url=1" width="500px" height="600px"&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_YExPk6W3YQg/Syd0LNr1c4I/AAAAAAAAAHc/MdG4cWRIK2A/s1600-h/newcomponentfinalstep.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5415424812937212802" src="http://3.bp.blogspot.com/_YExPk6W3YQg/Syd0LNr1c4I/AAAAAAAAAHc/MdG4cWRIK2A/s400/newcomponentfinalstep.JPG" style="cursor: pointer; height: 180px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 6:&lt;br /&gt;&lt;br /&gt;Add the component you just now created to your Home Page Layout. And Done!!!&lt;br /&gt;&lt;br /&gt;Here's a snapshot of the HomePage..&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_YExPk6W3YQg/Syd3RPVA2BI/AAAAAAAAAH0/yIowhl8kBuU/s1600-h/finalhomepage.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5415428214992459794" src="http://2.bp.blogspot.com/_YExPk6W3YQg/Syd3RPVA2BI/AAAAAAAAAH0/yIowhl8kBuU/s400/finalhomepage.JPG" style="cursor: pointer; height: 311px; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-530054281662715958?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/530054281662715958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/12/adding-visualforce-page-to-home-page.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/530054281662715958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/530054281662715958'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/12/adding-visualforce-page-to-home-page.html' title='Adding a Visualforce Page to the Home Page Layout'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_YExPk6W3YQg/SydzvxAJDoI/AAAAAAAAAHE/Mpo3uC8GLnc/s72-c/homepagecomponent.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-8164467798558060213</id><published>2009-11-23T04:02:00.000-08:00</published><updated>2011-07-25T11:37:05.909-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualforce example'/><category scheme='http://www.blogger.com/atom/ns#' term='visualforce edit'/><title type='text'>Inline Editing in Visualforce</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;b&gt;Update: Inline Editing is now available and supported out of the box. &lt;a href="http://blog.sforce.com/sforce/2011/02/spring-11-the-visualforce-inline-editing-component.html"&gt;Click here&lt;/a&gt; to know more&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You might be aware that inline editing is not supported in Visualforce as of now.&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;I tried to create a Visualforce Page and wrote a custom logic to Mimic the Inline Editing Functionality. Not a 100% mimic though, but to some extent a decent one...&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Step 1:&lt;/div&gt;&lt;div&gt;&lt;div&gt;Create an Apex Class named "inlineediting" and paste the code below....&lt;/div&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;public class inlineediting {&lt;br /&gt;&lt;br /&gt;public Boolean readonly;&lt;br /&gt;public boolean editmode;&lt;br /&gt;public inlineediting(ApexPages.StandardController controller)&lt;br /&gt;{&lt;br /&gt;readonly=true;&lt;br /&gt;editmode=false;&lt;br /&gt;}&lt;br /&gt;public boolean getreadonlymode(){return readonly;}&lt;br /&gt;&lt;br /&gt;public void setreadonlymode(Boolean readonly)&lt;br /&gt;{&lt;br /&gt;this.readonly= readonly;&lt;br /&gt;}&lt;br /&gt;public boolean geteditmode(){return editmode;}&lt;br /&gt;&lt;br /&gt;public void seteditmode(Boolean editmode)&lt;br /&gt;{&lt;br /&gt;this.editmode= editmode;&lt;br /&gt;}&lt;br /&gt;public void inlineedit()&lt;br /&gt;{&lt;br /&gt;system.debug('entered here');&lt;br /&gt;readonly = false;&lt;br /&gt;editmode = true;&lt;br /&gt;}   &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Step 2:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Create a Visualforce Page with the following code...&lt;/div&gt;&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&lt;span style="font-family: monospace;"&gt;&amp;lt;apex:page standardcontroller="Account" extensions="inlineediting" showheader="false"&amp;gt;&lt;br /&gt;&amp;lt;apex:form &amp;gt;&lt;br /&gt;&amp;lt;apex:pageBlock &amp;gt;&lt;br /&gt;&amp;lt;apex:outputPanel id="outpanel"&amp;gt;&lt;br /&gt;&amp;lt;apex:pageblocksection columns="1"&amp;gt;&lt;br /&gt;&amp;lt;apex:pageblocksectionItem &amp;gt;&lt;br /&gt;&amp;lt;apex:outputlabel value="Account Name" for="Accname" rendered="{!readonlymode}"&amp;gt;&lt;br /&gt;&amp;lt;apex:actionSupport event="ondblclick" action="{!inlineedit}" rerender="outpanel"/&amp;gt;&lt;br /&gt;&amp;lt;/apex:outputlabel&amp;gt;&lt;br /&gt;&amp;lt;apex:outputtext value="{!Account.Name}" rendered="{!readonlymode}" id="Accname"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/apex:outputtext&amp;gt;&lt;br /&gt;&amp;lt;/apex:pageblocksectionItem&amp;gt;          &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;apex:inputfield value="{!Account.Name}" rendered="{!editmode}"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/apex:pageblocksection&amp;gt;    &lt;br /&gt;&amp;lt;/apex:outputPanel&amp;gt;&lt;br /&gt;&amp;lt;/apex:pageBlock&amp;gt;&lt;br /&gt;&amp;lt;/apex:form&amp;gt;         &lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;Name the Visualforce Page as "Inlineediting" (for example)&lt;br /&gt;Step 3:&lt;/div&gt;&lt;div&gt;Go to the URL bar and type the following&lt;/div&gt;&lt;div style="color: #b45f06;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; white-space: pre;"&gt;https://&lt;b&gt;&lt;span class="Apple-style-span"&gt;na5.salesforce.com&lt;/span&gt;&lt;/b&gt;/apex/inlineediting?id=&lt;b&gt;&lt;span class="Apple-style-span"&gt;0017000000ZUYGv&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #b45f06;"&gt;&lt;span class="Apple-style-span"&gt;Note:- The bold part denotes your salesforce.com instance and a valid AccountId in your Instance.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #b45f06;"&gt;&lt;span class="Apple-style-span"&gt;Also, you will have to double click on the "Account Name" label to see the functionality.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;You could then customize the code as per your needs... &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Screenshots:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_YExPk6W3YQg/SwqC_wSzKSI/AAAAAAAAAG0/bSXkPFbWwag/s1600/beforeedit.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5407278334418823458" src="http://3.bp.blogspot.com/_YExPk6W3YQg/SwqC_wSzKSI/AAAAAAAAAG0/bSXkPFbWwag/s400/beforeedit.JPG" style="height: 29px; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_YExPk6W3YQg/SwqDOl5BDcI/AAAAAAAAAG8/1Dg-QU-CfUU/s1600/afteredit.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5407278589324365250" src="http://4.bp.blogspot.com/_YExPk6W3YQg/SwqDOl5BDcI/AAAAAAAAAG8/1Dg-QU-CfUU/s400/afteredit.JPG" style="height: 37px; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_YExPk6W3YQg/SwqCo8N_doI/AAAAAAAAAGs/HkaqvfndPSs/s1600/beforeedit.JPG"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_YExPk6W3YQg/SwqCo8N_doI/AAAAAAAAAGs/HkaqvfndPSs/s1600/beforeedit.JPG"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-8164467798558060213?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/8164467798558060213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/11/inline-editing-in-visualforce.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/8164467798558060213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/8164467798558060213'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/11/inline-editing-in-visualforce.html' title='Inline Editing in Visualforce'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_YExPk6W3YQg/SwqC_wSzKSI/AAAAAAAAAG0/bSXkPFbWwag/s72-c/beforeedit.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-2241590707860723072</id><published>2009-11-13T23:28:00.000-08:00</published><updated>2009-11-13T23:54:58.901-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='1:1'/><category scheme='http://www.blogger.com/atom/ns#' term='salesforce relationship'/><category scheme='http://www.blogger.com/atom/ns#' term='one to one'/><title type='text'>One to One relationship in Salesforce</title><content type='html'>Well, Salesforce offers one to many relationship and recently Many to Many relationship has also been possible using the concept of a Junction object...&lt;br /&gt;&lt;br /&gt;But, is there a One to One relationship in Salesforce. Well, it is not available out of the Box. But is definitely achievable using simple workflow rules...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Scenario:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let's consider the scenario that we would like to establish a One to One relationship between Accounts and Contacts..&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Step 1:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create a custom field on the Contact object. Make the field unique. This field would be used to hold the ID of the associated Account.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Step 2:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create a Workflow rule on Contact. Update the custom field with the value of the associated Account ID.&lt;br /&gt;&lt;br /&gt;Done!! you have established a one to one relationship between Account and Contacts...&lt;br /&gt;&lt;br /&gt;When you try to add a second contact to the Account, the "unique" constraint would be violated and an error would be thrown.....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-2241590707860723072?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/2241590707860723072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/11/one-to-one-relationship-in-salesforce.html#comment-form' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2241590707860723072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2241590707860723072'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/11/one-to-one-relationship-in-salesforce.html' title='One to One relationship in Salesforce'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-7416106964858908790</id><published>2009-10-30T06:17:00.000-07:00</published><updated>2009-11-13T23:26:36.688-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='event and calendar limitations'/><category scheme='http://www.blogger.com/atom/ns#' term='salesforce limitations'/><title type='text'>Events and Calendar in Salesforce - Advantages and Limitattions</title><content type='html'>I was playing around with the Events and Calendar functionality available in Salesforce and thought it would be worth sharing my understanding......... Here it is.......&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;Events:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Advantages&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You can add multiple Participants to an Event.&lt;/li&gt;&lt;li&gt;The Participant could be a User, a Contact or a Lead.&lt;/li&gt;&lt;li&gt;You can send Invites to all participants.&lt;/li&gt;&lt;li&gt;You can associate any object with an Event.&lt;/li&gt;&lt;li&gt;Meeting Invites display the start and end time according to the User's Time Zone.&lt;/li&gt;&lt;li&gt;Out of the box 'outlook' / 'Lotus Notes' sync&lt;/li&gt;&lt;/ul&gt;Limitations:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You cannot modify the meeting invite.&lt;/li&gt;&lt;li&gt;You cannot add a custom LOOK UP field to your Event (Setup --&gt; Activity Custom Fields).&lt;/li&gt;&lt;li&gt;Meeting Invites display in the Time Zone of the Event creator for Participants who are Contacts (Obviously, they do not have a Time Zone).&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Only 1 x large text field&lt;/li&gt;&lt;li&gt;Date cannot be used in formulas / workflows&lt;/li&gt;&lt;li&gt;It is not simple to view all the events a participant has been to (attendees vs 'who' on the event)&lt;/li&gt;&lt;li&gt;Invites have salesforce branding (can be removed with a black tab setting)&lt;/li&gt;&lt;li&gt;Polymorphic fields (who and what) are difficult to use in formulas&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(51, 102, 255);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;Calendar:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Advantages:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You have multiple views of your calendar (Weekly,daily,multi-user view etc).&lt;/li&gt;&lt;li&gt;You can view event details straight from your calendar by just hovering over the date (Mini Page Layout's actually).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Limitations:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You are allowed to create elapsing events. Salesforce does not stop you from creating an Event for a User even if he is BUSY. &lt;/li&gt;&lt;li&gt;Calendar displays multiple Events side by side.&lt;/li&gt;&lt;li&gt;The Calendar can only be placed in the Home Page.&lt;/li&gt;&lt;li&gt;The Calendar is not customizable.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-7416106964858908790?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/7416106964858908790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/10/events-and-calendar-in-salesforce.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7416106964858908790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7416106964858908790'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/10/events-and-calendar-in-salesforce.html' title='Events and Calendar in Salesforce - Advantages and Limitattions'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-6134049671990331664</id><published>2009-10-16T05:37:00.000-07:00</published><updated>2010-11-10T03:06:09.312-08:00</updated><title type='text'>Salesforce.com - Reference to tools and resources - All in one place</title><content type='html'>Everytime i need to install a administrative tool or if i need tutorials or references, i found that i spend a considerable amount of time in locating them... As a result, this article came to my mind..&lt;br /&gt;&lt;br /&gt;Here, you will find links to some of the administrative tools in Salesforce.com as well as less-known good resources..&lt;br /&gt;&lt;br /&gt;This list would be updated as and when i find new resources.. So, make sure you bookmark this page :-)&lt;br /&gt;&lt;br /&gt;&lt;u style="color: orange;"&gt;&lt;b&gt;Salesforce objects, fields and their usage - Complete description&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;This is the official WebServices Developer's guide but has enough information that you would want to know about Salesforce objects, how to use them etc through the API. &lt;a href="http://www.salesforce.com/us/developer/docs/api/index_Left.htm#CSHID=sforce_api_quickstart_intro.htm%7CStartTopic=Content%2Fsforce_api_quickstart_intro.htm%7CSkinName=webhelp"&gt;Click here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: orange;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Excel Connector for Salesforce.com&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Sforce Connector - &lt;a href="http://sforce.sourceforge.net/excel/"&gt;Click here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Office toolkit 3.0 - &lt;a href="http://www.salesforce.com/us/developer/docs/officetoolkit30/SForce_Office_Toolkit_MSI.zip"&gt;Click here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Please note that Office toolkit 4.0 is installed automatically when you install the Outlook connector for Salesforce....&lt;br /&gt;&lt;br /&gt;&lt;div style="color: orange;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Apex Explorer&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Installation guide and notes - &lt;a href="http://wiki.developerforce.com/index.php/Apex_Explorer"&gt;Click here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Installation file - &lt;a href="http://www.adnsandbox.com/appexchange/ApexExplorer.zip"&gt;Click here to download&lt;/a&gt;&lt;a href="http://www.adnsandbox.com/appexchange/ApexExplorer.zip" style="color: #000099;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: orange;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Apex Data Loader&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Installation guide and notes - &lt;a href="http://wiki.developerforce.com/index.php/Apex_Data_Loader"&gt;Click here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #3d85c6;"&gt;Running the Apex Data Loader from the command prompt:&lt;/b&gt;&lt;a href="http://www.apexdevnet.com/media/Cheatsheet_Setting_Up_Automated_Data_Loader_9_0.pdf"&gt; Click here&lt;/a&gt;&lt;br /&gt;&lt;b style="color: #3d85c6;"&gt;Running the Apex Data Loader from the command prompt (Simplified) : &lt;/b&gt;&lt;b style="color: #3d85c6;"&gt;&lt;/b&gt;&lt;a href="http://code.google.com/p/dataloadercliq/"&gt;Click here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: orange;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;SFDC Web to anything -&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;You might have heard about web to Case, web to anything lets you to create records in any object through a web form..&lt;br /&gt;&lt;br /&gt;You can find the code, screenshots and description here - &lt;a href="http://code.google.com/p/sfdc-web2anything/"&gt;Click here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: orange;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Tutorials and guides&lt;/u&gt;&lt;/span&gt; -&lt;/div&gt;&lt;br /&gt;The official salesforce.com guide's and tutorial's page - &lt;a href="http://wiki.developerforce.com/index.php/Documentation"&gt;Click here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: orange;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Discussion forums -&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;The official salesforce.com community forums - &lt;a href="http://community.salesforce.com/"&gt;Click here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-6134049671990331664?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/6134049671990331664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/10/salesforcecom-reference-to-tools-and.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/6134049671990331664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/6134049671990331664'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/10/salesforcecom-reference-to-tools-and.html' title='Salesforce.com - Reference to tools and resources - All in one place'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-1649249171430606433</id><published>2009-10-13T08:45:00.000-07:00</published><updated>2009-10-14T04:59:56.367-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rerender'/><category scheme='http://www.blogger.com/atom/ns#' term='actionstatus'/><category scheme='http://www.blogger.com/atom/ns#' term='parial refresh'/><category scheme='http://www.blogger.com/atom/ns#' term='actionsupport'/><title type='text'>Rerender and actionsupport - A simple example</title><content type='html'>&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;What is the purpose of Rerender??&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Rerender is used when you want to refresh only a portion of your visualforce page when the user does some action... This would actually improve the user interface and reduce processing time....&lt;br /&gt;&lt;br /&gt;In this article we will go through a simple example which demonstrates the usage of these two attributes..&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;A small program:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create a visualforce page with the following code...&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page &amp;gt;&lt;br /&gt;&amp;lt;apex:form&amp;gt;&lt;br /&gt;   &amp;lt;apex:pageBlock&amp;gt;&lt;br /&gt;       &amp;lt;apex:sectionHeader title="Rerender Example"/&amp;gt;      &lt;br /&gt;           &amp;lt;apex:commandButton value="Move your mouse here to refresh the time!"&amp;gt;&lt;br /&gt;               &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;&amp;lt;apex:actionSupport&lt;/span&gt; event="onmouseover" &lt;span style="color: rgb(255, 0, 0);"&gt;rerender="time"&lt;/span&gt; &lt;span style="color: rgb(204, 102, 0);"&gt;status="refreshstatus"&lt;/span&gt;/&amp;gt;&lt;br /&gt;           &amp;lt;/apex:commandButton&amp;gt;&lt;br /&gt;           &amp;lt;apex:actionStatus &lt;span style="color: rgb(204, 102, 0);"&gt;id="refreshstatus"&lt;/span&gt; startstyle="color:green;" startText="Refreshing...."&amp;gt;&amp;lt;/apex:actionStatus&amp;gt;  &lt;br /&gt;           &amp;lt;apex:outputpanel &lt;span style="color: rgb(255, 0, 0);"&gt;id="time"&lt;/span&gt;&amp;gt;&lt;br /&gt;               &amp;lt;apex:outputtext value="{!NOW()}"/&amp;gt;&lt;br /&gt;           &amp;lt;/apex:outputpanel&amp;gt;  &lt;br /&gt;   &amp;lt;/apex:pageBlock&amp;gt;&lt;br /&gt;&amp;lt;/apex:form&amp;gt;  &lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Save the page and move your mouse across the button to see the results....&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Understanding the code:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We will now analyze the code..&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;apex:actionSupport event=&amp;quot;onmouseover&amp;quot; rerender=&amp;quot;time&amp;quot; status=&amp;quot;refreshstatus&amp;quot;/&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The &lt;span style="color: rgb(51, 102, 255);"&gt;event&lt;/span&gt; attribute determines which action should refresh the page, we have a onmouseover. That's why when you move the mouse over the command button, the time gets refreshed..&lt;br /&gt;&lt;br /&gt;The &lt;span style="color: rgb(51, 102, 255);"&gt;rerender&lt;/span&gt; attribute determines the portion of the page to be refreshed. We have "time" which is the ID of the portion to be refreshed....&lt;br /&gt;&lt;br /&gt;The &lt;span style="color: rgb(51, 102, 255);"&gt;actionstatus&lt;/span&gt; attribute determines the status message to be displayed when the refresh takes place. We have "refreshstatus" which is the ID of the associated "actionstatus" tag...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-1649249171430606433?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/1649249171430606433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/10/rerender-and-actionsupport-simple.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1649249171430606433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/1649249171430606433'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/10/rerender-and-actionsupport-simple.html' title='Rerender and actionsupport - A simple example'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-3623436289888919075</id><published>2009-10-01T09:28:00.000-07:00</published><updated>2009-10-01T09:32:36.489-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='developer challenge'/><title type='text'>Developer challenge results announced</title><content type='html'>The most awaited developer challenge results have been announced...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was really amazed by the extraordinary stuff that has been created by people across the globe..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can view the winner,runner up and some special sites &lt;a href="http://blog.sforce.com/sforce/2009/09/developer-force-challenge-results.html"&gt;here&lt;/a&gt;...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-3623436289888919075?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/3623436289888919075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/10/developer-challenge-results-announced.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/3623436289888919075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/3623436289888919075'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/10/developer-challenge-results-announced.html' title='Developer challenge results announced'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-4623668504954333906</id><published>2009-09-10T06:05:00.000-07:00</published><updated>2009-09-17T06:17:24.702-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualforce example'/><category scheme='http://www.blogger.com/atom/ns#' term='salesforce avoid duplicates'/><category scheme='http://www.blogger.com/atom/ns#' term='override button'/><title type='text'>Duplicates in Salesforce - A better approach</title><content type='html'>Duplicate data is always a problem, particularly when the quantity of data is too large and when the quality of data is very critical..&lt;br /&gt;&lt;br /&gt;Salesforce uses a 'UNIQUE' definition on a field to avoid duplicates. When this attribute is set to TRUE you will have only unique values in the field.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Problem:&lt;/span&gt;&lt;br /&gt;Salesforce displays an error message when you try to enter a duplicate value and click on "SAVE". But, you would not want the user to enter all values and get an error message as the last step. Moreover, in some cases you would not want the user to create a new record if it already exists...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Solution:&lt;/span&gt;&lt;br /&gt;Clearly, a search for existing records before creating a new one would be a typical solution. But not all fields are searchable.....&lt;br /&gt;&lt;br /&gt;A more user friendly approach would be to allow the user to enter the UNIQUE field first, if the value already exists he would be shown an error message else he will be redirected to the normal New Page screen...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Step 1:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create a Visualforce Page with the code below....&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page standardController="Case" extensions="caseApex"&amp;gt;&lt;br /&gt; &amp;lt;apex:pageBlock title="Tickets"&amp;gt;&lt;br /&gt;     &amp;lt;apex:form &amp;gt;&lt;br /&gt;             Enter your Ticket Number Here&lt;br /&gt;                             &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;apex:inputField value="{!NewCase.Ticket_Number__c}"/&amp;gt;&lt;br /&gt;             &amp;lt;apex:commandButton action="{!Next}" value="click here to proceed" status="status"/&amp;gt;&lt;br /&gt;                 &lt;br /&gt;         &amp;lt;!-- Display error message --&amp;gt;&lt;br /&gt;             &amp;lt;apex:pagemessage strength="2" title="Error!!" severity="error" detail="This Ticket Already Exists !!!" rendered="{!errormsg}"/&amp;gt;&amp;lt;!-- End of error message --&amp;gt;&lt;br /&gt;               &amp;lt;apex:pageblocktable rendered="{!NOT(ISNULL(existingcase))}" value="{!existingcase}" var="case"&amp;gt;&lt;br /&gt;                               &amp;lt;apex:column headervalue="Select"&amp;gt;&lt;br /&gt;                                       &amp;lt;apex:commandlink action="{!SelectTicket}"&amp;gt;&lt;br /&gt;                                           &amp;lt;input type="radio" name="CaseSel"/&amp;gt;&lt;br /&gt;                                       &amp;lt;/apex:commandlink&amp;gt;                                         &lt;br /&gt;                              &amp;lt;/apex:column&amp;gt;&lt;br /&gt;                              &amp;lt;apex:column headervalue="Ticket Number"&amp;gt; &amp;lt;apex:outputtext value="{!case.Ticket_Number__c}"/&amp;gt;  &amp;lt;/apex:column&amp;gt;&lt;br /&gt;                              &amp;lt;apex:column headervalue="Description"&amp;gt; &amp;lt;apex:outputtext value="{!case.Description}"/&amp;gt;  &amp;lt;/apex:column&amp;gt;&lt;br /&gt;               &amp;lt;/apex:pageblocktable&amp;gt;&lt;br /&gt;     &amp;lt;/apex:form&amp;gt;&lt;br /&gt; &amp;lt;/apex:pageBlock&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;The Apex Code for the Visualforce Page is as below...&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;public class caseApex {&lt;br /&gt;&lt;br /&gt;public boolean errormsg=false;&lt;br /&gt;public String CaseId=System.currentPageReference().getParameters().get('id');&lt;br /&gt;public String tnum;&lt;br /&gt;public List&amp;lt;Case&amp;gt; chkdup;&lt;br /&gt;public Case newcase= new Case();&lt;br /&gt;&lt;br /&gt; public caseApex(ApexPages.StandardController controller)&lt;br /&gt; {&lt;br /&gt; }&lt;br /&gt; public case getnewcase()&lt;br /&gt; {&lt;br /&gt;     return newcase;&lt;br /&gt; }&lt;br /&gt; public case getexistingcase()&lt;br /&gt; {&lt;br /&gt;     if (chkdup!= NULL)&lt;br /&gt;     {&lt;br /&gt;     if(chkdup.size()&amp;gt;0)&lt;br /&gt;         return chkdup[0];&lt;br /&gt;     else&lt;br /&gt;         return null;&lt;br /&gt;     }&lt;br /&gt;     else&lt;br /&gt;         return null;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;public pagereference Next()&lt;br /&gt;{&lt;br /&gt; chkdup=[select Ticket_Number__c,id,Description from Case where Ticket_Number__c=:newcase.Ticket_Number__c limit 1];&lt;br /&gt; if(chkdup.size()==0)&lt;br /&gt; {&lt;br /&gt;      String tnum=newcase.Ticket_Number__c;&lt;br /&gt;      Pagereference newcase1 = new Pagereference('/500/e?nooverride=true&amp;amp;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;00N90000000LSLd&lt;/span&gt;='+tnum+'');&lt;br /&gt;      return newcase1;&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt;       errormsg=true;&lt;br /&gt;       return null;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public pagereference SelectTicket()&lt;br /&gt;{&lt;br /&gt;   Pagereference chkdup = new Pagereference('/'+chkdup[0].Id);&lt;br /&gt;   return chkdup;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public boolean geterrormsg()&lt;br /&gt;{&lt;br /&gt;  return errormsg;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Please note the coloured part in the above code... This is a hardcoded value for my instance. It denotes the field Id.. A better explanation about this is available &lt;a href="http://salesforceexperts.blogspot.com/2009/07/standard-newedit-page-vs-your.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Step 2:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Override the "New" button of "Cases" with the Visualforce Page you created....&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Screenshots:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When the user clicks on "New" button under Case he will be shown this Page&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YExPk6W3YQg/SrIzwDnjj8I/AAAAAAAAAGc/9Ytf5GvFRz8/s1600-h/newCase.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 93px;" src="http://4.bp.blogspot.com/_YExPk6W3YQg/SrIzwDnjj8I/AAAAAAAAAGc/9Ytf5GvFRz8/s320/newCase.JPG" alt="" id="BLOGGER_PHOTO_ID_5382421405359116226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Below is a screnshot showing a message that the case already exits&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_YExPk6W3YQg/SrI0FlT0CII/AAAAAAAAAGk/HOphQDlAklU/s1600-h/newCase1.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 113px;" src="http://3.bp.blogspot.com/_YExPk6W3YQg/SrI0FlT0CII/AAAAAAAAAGk/HOphQDlAklU/s320/newCase1.JPG" alt="" id="BLOGGER_PHOTO_ID_5382421775180368002" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-4623668504954333906?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/4623668504954333906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/09/duplicates-in-salesforce-better.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/4623668504954333906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/4623668504954333906'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/09/duplicates-in-salesforce-better.html' title='Duplicates in Salesforce - A better approach'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_YExPk6W3YQg/SrIzwDnjj8I/AAAAAAAAAGc/9Ytf5GvFRz8/s72-c/newCase.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-9074996654234595539</id><published>2009-09-03T04:33:00.000-07:00</published><updated>2009-09-08T08:31:04.279-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visualforce email template'/><category scheme='http://www.blogger.com/atom/ns#' term='Salesforce style'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>Using Salesforce CSS styles in your page</title><content type='html'>&lt;div&gt;Having something look standard and uniform really matters.. You would like to present the user with the Standard look and feel wherever possible..&lt;br /&gt;&lt;br /&gt;Situations in which this may not be possible are&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Email Templates&lt;/li&gt;&lt;li&gt;Web-to-Lead&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Etc etc&lt;/li&gt;&lt;/ul&gt;As you may be knowing, Salesforce uses a bunch of CSS files to present users with the standard salesforce look and feel..&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.salesforce.com/us/developer/docs/pages/Content/pages_styling_salesforce.htm"&gt;Click here&lt;/a&gt; to read the Salesforce documentation. The following three files are the most commonly used.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note&lt;/span&gt; that i have specified "na5.salesforce.com" in the URL, this is to be used when your page would be displayed outside of Salesforce otherwise you may omit this part. This may be any instance, not specifically na5... This file is public so anyone can access it. you do not need a Salesforce username and password to access it..&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:monospace;"&gt;&lt;pre face="Andale Mono,Lucida Console,Monaco,fixed,monospace" size="12px" style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); line-height: 14px; width: 100%;"&gt;&lt;code&gt;      &amp;lt;link class="user" href="https://na5.salesforce.com/sCSS/16.0/sprites/1245343872000/Theme2/default/elements.css" rel="stylesheet" type="text/css" /&amp;gt;&lt;br /&gt;    &amp;lt;link class="user" href="https://na5.salesforce.com/sCSS/16.0/sprites/1245343872000/Theme2/default/common.css" rel="stylesheet" type="text/css" /&amp;gt;&lt;br /&gt;    &amp;lt;link  href="https://na5.salesforce.com/sCSS/16.0/sprites/1251310209000/Theme2/dStandard.css" rel="stylesheet" type="text/css" /&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Scenario:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have a table to display in my Visualforce email template. I am using a HTML table. Since the apex:detail tag is not available with Visualforce email templates, i will display the information in a HTML table and apply salesforce look and feel o make it appear as a standard Detail Page...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255); font-weight: bold;"&gt;Plain HTML Table:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); overflow: auto; padding-bottom: 5px; line-height: 14px; background-color: rgb(238, 238, 238); padding-left: 5px; width: 100%; padding-right: 5px; color: rgb(0, 0, 0); font-size: 12px;"&gt;&lt;code&gt;          &amp;lt;table  style="font-size:100%" border="0" cellpadding="5" border="0" cellspacing="0"&amp;gt;       &lt;br /&gt;           &amp;lt;tr&amp;gt;&lt;br /&gt;                &amp;lt;td&amp;gt;Opportunity Name:&amp;lt;/td&amp;gt;&amp;lt;td &amp;gt;{!Relatedto.Name}&amp;lt;/td&amp;gt;&lt;br /&gt;                &amp;lt;td&amp;gt;Stage:&amp;lt;/td&amp;gt;&amp;lt;td &amp;gt;&amp;lt;apex:outputfield value="{!Relatedto.StageName}"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;           &amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;br /&gt;           &amp;lt;tr&amp;gt;&lt;br /&gt;                &amp;lt;td&amp;gt;&amp;lt;apex:outputlabel value="Account:"/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td &amp;gt;&amp;lt;apex:outputfield value="{!Relatedto.Account.Name}"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;                &amp;lt;td&amp;gt;&amp;lt;apex:outputlabel value="Close Date:"/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td &amp;gt;&amp;lt;apex:outputfield value="{!Relatedto.CloseDate}"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;           &amp;lt;/tr&amp;gt;       &lt;br /&gt;           &amp;lt;tr&amp;gt;&lt;br /&gt;               &amp;lt;td&amp;gt;&amp;lt;apex:outputlabel value="Amount:"/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;apex:outputField value="{!Relatedto.Amount}"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;               &amp;lt;td&amp;gt;&amp;lt;apex:outputlabel value="Primary Campaign:"/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td &amp;gt;&amp;lt;apex:outputfield value="{!Relatedto.Campaign.Name}"/&amp;gt;&amp;lt;/td&amp;gt;    &lt;br /&gt;           &amp;lt;/tr&amp;gt;&lt;br /&gt;      &amp;lt;/table&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Preview:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_YExPk6W3YQg/SqZxeelQUJI/AAAAAAAAAGI/YDOIaVnOQJk/s1600-h/EmailTemplateExample.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 73px;" src="http://2.bp.blogspot.com/_YExPk6W3YQg/SqZxeelQUJI/AAAAAAAAAGI/YDOIaVnOQJk/s320/EmailTemplateExample.JPG" alt="" id="BLOGGER_PHOTO_ID_5379111573359972498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;HTML Table with Salesforce look and feel:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; &amp;lt;head&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      &amp;lt;link class="user" href="https://na5.salesforce.com/sCSS/16.0/sprites/1245343872000/Theme2/default/elements.css" rel="stylesheet" type="text/css" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      &amp;lt;link class="user" href="https://na5.salesforce.com/sCSS/16.0/sprites/1245343872000/Theme2/default/common.css" rel="stylesheet" type="text/css" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      &amp;lt;link  href="https://na5.salesforce.com/sCSS/16.0/sprites/1251310209000/Theme2/dStandard.css" rel="stylesheet" type="text/css" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; &amp;lt;/head&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; &amp;lt;body class="opportunityTab  detailPage"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; &amp;lt;div class="bPageBlock secondaryPalette"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;     &amp;lt;div class="pbBody"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        &amp;lt;div class="pbSubsection"&amp;gt;&lt;/span&gt;&lt;br /&gt;            &amp;lt;table  &amp;gt;      &lt;br /&gt;           &amp;lt;tr&amp;gt;&lt;br /&gt;                &amp;lt;td &lt;span style="color: rgb(51, 51, 255);"&gt;class="labelCol"&lt;/span&gt;&amp;gt;Opportunity Name:&amp;lt;/td&amp;gt;&amp;lt;td &amp;gt;{!Relatedto.Name}&amp;lt;/td&amp;gt;&lt;br /&gt;                &amp;lt;td &lt;span style="color: rgb(51, 51, 255);"&gt;class="labelCol"&lt;/span&gt;&amp;gt;Stage:&amp;lt;/td&amp;gt;&amp;lt;td &amp;gt;&amp;lt;apex:outputfield value="{!Relatedto.StageName}"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;           &amp;lt;/tr&amp;gt;&lt;br /&gt;           &amp;lt;tr&amp;gt;&lt;br /&gt;                &amp;lt;td &lt;span style="color: rgb(51, 51, 255);"&gt;class="labelCol"&lt;/span&gt;&amp;gt;&amp;lt;apex:outputlabel value="Account:"/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td &amp;gt;&amp;lt;apex:outputfield value="{!Relatedto.Account.Name}"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;                &amp;lt;td &lt;span style="color: rgb(51, 51, 255);"&gt;class="labelCol"&lt;/span&gt;&amp;gt;&amp;lt;apex:outputlabel value="Close Date:"/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td &amp;gt;&amp;lt;apex:outputfield value="{!Relatedto.CloseDate}"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;           &amp;lt;/tr&amp;gt;      &lt;br /&gt;           &amp;lt;tr&amp;gt;&lt;br /&gt;               &amp;lt;td &lt;span style="color: rgb(51, 51, 255);"&gt;class="labelCol"&lt;/span&gt;&amp;gt;&amp;lt;apex:outputlabel value="Amount:"/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;apex:outputField value="{!Relatedto.Amount}"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;               &amp;lt;td &lt;span style="color: rgb(51, 51, 255);"&gt;class="labelCol"&lt;/span&gt;&amp;gt;&amp;lt;apex:outputlabel value="Primary Campaign:"/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td &amp;gt;&amp;lt;apex:outputfield value="{!Relatedto.Campaign.Name}"/&amp;gt;&amp;lt;/td&amp;gt;   &lt;br /&gt;           &amp;lt;/tr&amp;gt;&lt;br /&gt;          &amp;lt;/table&amp;gt;&lt;br /&gt;        &amp;lt;/div&amp;gt;&lt;br /&gt;   &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Preview:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_YExPk6W3YQg/SqZyVcFkdoI/AAAAAAAAAGQ/Nxecl8oZChM/s1600-h/EmailtemplateVFStyle.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 70px;" src="http://2.bp.blogspot.com/_YExPk6W3YQg/SqZyVcFkdoI/AAAAAAAAAGQ/Nxecl8oZChM/s320/EmailtemplateVFStyle.JPG" alt="" id="BLOGGER_PHOTO_ID_5379112517583009410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Code Explanation:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The blue colored part in the code above is the modifications that we have done to our plain HTML table. Now ,let's analyze the code in detail... The Head tag as you know contain links to salesforce style sheets...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;body class=&amp;quot;opportunityTab  detailPage&amp;quot;&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This sets the color of the Page layout to Opportunity since we have specified Opportunitytab in the styleclass.. If you set it o Accounttab the style of Account will be applied....&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;div class="bPageBlock secondaryPalette"&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;This div denotes the pageblock this is the main outer div....&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;div class="pbBody"&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;This div denotes the pageblocksection.&lt;br /&gt;&lt;span style="font-family:monospace;"&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;div class="pbSubsection"&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;This div denotes the data to be displayed inside the pabeblocksection.&lt;br /&gt;&lt;br /&gt;Inside the HTML table we have td class="labelCol", this is used only for headings to make sure that it is bold and is right aligned..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Complete code of Visualforce Email Template:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; line-height: 14px; background-color: rgb(238, 238, 238); width: 100%; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); font-size: 12px;"&gt;&lt;code&gt; &amp;lt;messaging:emailTemplate subject="Testing Email Template with Salesforce look" recipientType="Contact" relatedToType="Opportunity"&amp;gt;&lt;br /&gt;&amp;lt;messaging:htmlEmailBody &amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;    &amp;lt;link class="user" href="https://na5.salesforce.com/sCSS/16.0/sprites/1245343872000/Theme2/default/elements.css" rel="stylesheet" type="text/css" /&amp;gt;&lt;br /&gt;    &amp;lt;link class="user" href="https://na5.salesforce.com/sCSS/16.0/sprites/1245343872000/Theme2/default/common.css" rel="stylesheet" type="text/css" /&amp;gt;&lt;br /&gt;    &amp;lt;link  href="https://na5.salesforce.com/sCSS/16.0/sprites/1251310209000/Theme2/dStandard.css" rel="stylesheet" type="text/css" /&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body class="opportunityTab  detailPage"&amp;gt;&lt;br /&gt;&amp;lt;div class="bPageBlock secondaryPalette"&amp;gt;&lt;br /&gt;   &amp;lt;div class="pbBody"&amp;gt;&lt;br /&gt;      &amp;lt;div class="pbSubsection"&amp;gt;&lt;br /&gt;            &amp;lt;table  style="font-size:100%" border="0" cellpadding="5" border="0" cellspacing="0"&amp;gt;       &lt;br /&gt;           &amp;lt;tr&amp;gt;&lt;br /&gt;                &amp;lt;td class="labelCol"&amp;gt;Opportunity Name:&amp;lt;/td&amp;gt;&amp;lt;td &amp;gt;{!Relatedto.Name}&amp;lt;/td&amp;gt;&lt;br /&gt;                &amp;lt;td class="labelCol"&amp;gt;Stage:&amp;lt;/td&amp;gt;&amp;lt;td &amp;gt;&amp;lt;apex:outputfield value="{!Relatedto.StageName}"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;           &amp;lt;/tr&amp;gt;&lt;br /&gt;           &amp;lt;tr&amp;gt;&lt;br /&gt;                &amp;lt;td class="labelCol"&amp;gt;&amp;lt;apex:outputlabel value="Account:"/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td &amp;gt;&amp;lt;apex:outputfield value="{!Relatedto.Account.Name}"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;                &amp;lt;td class="labelCol"&amp;gt;&amp;lt;apex:outputlabel value="Close Date:"/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td &amp;gt;&amp;lt;apex:outputfield value="{!Relatedto.CloseDate}"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;           &amp;lt;/tr&amp;gt;       &lt;br /&gt;           &amp;lt;tr&amp;gt;&lt;br /&gt;               &amp;lt;td class="labelCol"&amp;gt;&amp;lt;apex:outputlabel value="Amount:"/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;apex:outputField value="{!Relatedto.Amount}"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;               &amp;lt;td class="labelCol"&amp;gt;&amp;lt;apex:outputlabel value="Primary Campaign:"/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td &amp;gt;&amp;lt;apex:outputfield value="{!Relatedto.Campaign.Name}"/&amp;gt;&amp;lt;/td&amp;gt;    &lt;br /&gt;           &amp;lt;/tr&amp;gt;&lt;br /&gt;          &amp;lt;/table&amp;gt;&lt;br /&gt;        &amp;lt;/div&amp;gt;&lt;br /&gt;   &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/messaging:htmlEmailBody&amp;gt;&lt;br /&gt;&amp;lt;/messaging:emailTemplate&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-9074996654234595539?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/9074996654234595539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/09/using-salesforce-css-styles-in-your.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/9074996654234595539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/9074996654234595539'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/09/using-salesforce-css-styles-in-your.html' title='Using Salesforce CSS styles in your page'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_YExPk6W3YQg/SqZxeelQUJI/AAAAAAAAAGI/YDOIaVnOQJk/s72-c/EmailTemplateExample.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-962873361645090031</id><published>2009-08-27T05:34:00.000-07:00</published><updated>2009-09-08T02:04:18.440-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='force.com sites'/><category scheme='http://www.blogger.com/atom/ns#' term='salesforce sample code'/><category scheme='http://www.blogger.com/atom/ns#' term='visualforce page'/><title type='text'>Building a Blog Application(Website) using Visualforce and Force.com Sites</title><content type='html'>&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;REFERENCES:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The following references have been used in building this site..&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wiki.developerforce.com/index.php/Visualforce_blog"&gt;&lt;span style="text-decoration: underline;"&gt;Blog Application -by Ron Hess&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.freewebtemplates.com/"&gt;&lt;span style="text-decoration: underline;"&gt;Free CSS Design Templates&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;In this article i would be explaining how i built &lt;a href="http://edwinvijay-developer-edition.na5.force.com/"&gt;my Force.com Site&lt;/a&gt;. The steps explained will help you build a similar such site, you can then customize the site as per your needs...&lt;br /&gt;&lt;br /&gt;Create a object with the following information.&lt;br /&gt;Object Name: Article&lt;br /&gt;&lt;table border="2"&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Field Label&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;Field Name&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;type&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Article Title&lt;/td&gt; &lt;td&gt; Name &lt;/td&gt; &lt;td&gt;Text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; Article Description &lt;/td&gt; &lt;td&gt; Article_Description &lt;/td&gt; &lt;td&gt; Text &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt; Author &lt;/td&gt; &lt;td&gt;Author &lt;/td&gt;&lt;td&gt;Text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt; createdmonth &lt;/td&gt; &lt;td&gt; createdmonth &lt;/td&gt; &lt;td&gt; Formula -MONTH( DATEVALUE(CreatedDate)) &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Category&lt;/td&gt; &lt;td&gt;Category&lt;/td&gt;&lt;td&gt; Picklist (VisualForce,Apex Class,Apex Triggers,Set-up and Config,Other) &lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;STEP1:&lt;/span&gt;&lt;br /&gt;I browsed through the net for free web templates and found hundreds of them... I downloaded one such template from this link.. &lt;a href="http://www.freewebtemplates.com/download/templates/8074"&gt;Click here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After you download the Zip file and extract it you will find a folder called "images" and a CSS file named "styles"... Create a Zip file of these two and name it deerpark(for example)..&lt;br /&gt;&lt;br /&gt;Now upload this deerpark.zip file as a Static Resource into SFDC... I named the Static resource as "SFUNEARTHEDCSS" , and make the Cache Control as Public...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;STEP2:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Open the "index" HTML file provide along with the CSS and images folder... Open the file using a notepad or wordpad to view the HTML code...&lt;br /&gt;&lt;br /&gt;You will have to modify this code ,insert visualorce tags whereever necessary and save them as visualforce pages.. This is how i did it..&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;STEP3:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create a Visualforce Component to use as the Site Header. We are using components here to avoid repetition of code... In all pages the header would be the same, hence creating a component would enable reuse of code...&lt;br /&gt;&lt;br /&gt;Setup --&gt; Develop --&gt; Components --&gt; New&lt;br /&gt;&lt;br /&gt;Create a new component with the name "SFUnearthedHeader" and paste the code below..&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:component &amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&amp;gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Salesforce Unearthed&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;meta name="keywords" content="" /&amp;gt;&lt;br /&gt;&amp;lt;meta name="description" content="" /&amp;gt;&lt;br /&gt;&amp;lt;link href="{!URLFOR($Resource.SFUNEARTHEDCSS,'style.css')}" rel="stylesheet" type="text/css" media="screen" /&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div id="header-wrapper"&amp;gt;&lt;br /&gt;&amp;lt;div id="logo"&amp;gt;&lt;br /&gt;&amp;lt;h1&amp;gt;&amp;lt;a href="http://salesforceexperts.blogspot.com"&amp;gt;Salesforce Unearthed&amp;lt;/a&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;hr /&amp;gt;&lt;br /&gt;&amp;lt;!-- end #logo --&amp;gt;&lt;br /&gt;&amp;lt;div id="header"&amp;gt;&lt;br /&gt;&amp;lt;div id="menu"&amp;gt;&lt;br /&gt;    &amp;lt;ul&amp;gt;&lt;br /&gt;        &amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Home&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;        &amp;lt;li&amp;gt;&amp;lt;a href="/apex/SFUnearthed_Articles"&amp;gt;Articles&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;        &amp;lt;li&amp;gt;&amp;lt;a href="http://salesforceexperts.blogspot.com"&amp;gt;Blog&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;        &amp;lt;li&amp;gt;&amp;lt;a href="/apex/SFUnearthed_Resources"&amp;gt;Resources&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;        &amp;lt;!--&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Time to Relax&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;--&amp;gt;&lt;br /&gt;    &amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;!-- end #menu --&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;!-- end #header --&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;!-- end #header-wrapper --&amp;gt;&lt;br /&gt;&amp;lt;/apex:component&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I have modified the links and the link names... modify them as per your needs...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;STEP 4:  Creating Visualforce Pages..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have a image stored as a Static resource named "createnewarticle"..&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_YExPk6W3YQg/SpaLIzf6W2I/AAAAAAAAAFo/AFANJg4hO_8/s1600-h/CreatenewArticle.png"&gt;&lt;img style="cursor: pointer; width: 160px; height: 24px;" src="http://2.bp.blogspot.com/_YExPk6W3YQg/SpaLIzf6W2I/AAAAAAAAAFo/AFANJg4hO_8/s320/CreatenewArticle.png" alt="" id="BLOGGER_PHOTO_ID_5374636188692536162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Save the above image to your desktop and upload as a static resource with name "createnewarticle" ....&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Create a Visualforce page named "SFUnearthed_articles"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;VF code is..&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page showheader="false" controller="SFUnearthed" title="Salesforce Unearthed" action="{!pageload}"&amp;gt;&lt;br /&gt;&amp;lt;c:SFUnearthedHeader &amp;gt;&amp;lt;/c:SFUnearthedHeader&amp;gt;&lt;br /&gt;&amp;lt;apex:form &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div id="page"&amp;gt;&lt;br /&gt;&amp;lt;div id="content"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;apex:outputpanel id="articlespace"&amp;gt;&lt;br /&gt; &amp;lt;apex:repeat value="{!articles}" var="article"&amp;gt;&lt;br /&gt; &amp;lt;div class="post"&amp;gt;&lt;br /&gt;     &amp;lt;h2 class="title"&amp;gt;{!article.Name}&amp;lt;/h2&amp;gt;&lt;br /&gt;     &amp;lt;p class="date"&amp;gt;{!article.Category__c}&amp;lt;/p&amp;gt;&lt;br /&gt;     &amp;lt;p class="meta"&amp;gt;&amp;lt;em&amp;gt;Posted by &amp;lt;a href="#"&amp;gt;{!article.Author__c}&amp;lt;/a&amp;gt; {!article.CreatedDate}&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;     &amp;lt;div class="entry"&amp;gt;&lt;br /&gt;         &amp;lt;apex:outputtext escape="false" value="{!article.Article_Description__c}"/&amp;gt;&lt;br /&gt;     &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/apex:repeat&amp;gt;&lt;br /&gt;&amp;lt;/apex:outputpanel&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;!-- end #content --&amp;gt;&lt;br /&gt;&amp;lt;div id="sidebar"&amp;gt;&lt;br /&gt;     &amp;lt;ul&amp;gt;&lt;br /&gt;         &amp;lt;div style="position:relative;left:40px;"&amp;gt;&lt;br /&gt;         &amp;lt;apex:commandlink action="{!createnewarticle}"&amp;gt; &amp;lt;apex:image url="{!$Resource.createnewarticle}"/&amp;gt; &amp;lt;/apex:commandlink&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;         &amp;lt;br/&amp;gt;&lt;br /&gt;         &amp;lt;li&amp;gt;&lt;br /&gt;         &amp;lt;h2&amp;gt;Categories&amp;lt;/h2&amp;gt;&lt;br /&gt;         &amp;lt;ul&amp;gt;&lt;br /&gt;             &amp;lt;li&amp;gt;&amp;lt;apex:commandlink value="Visualforce" action="{!Category}"&amp;gt;&amp;lt;apex:actionsupport event="onclick" rerender="articlespace"/&amp;gt;&amp;lt;apex:param name="category" value="visualforce"/&amp;gt;&amp;lt;/apex:commandlink&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;             &amp;lt;li&amp;gt;&amp;lt;apex:commandlink value="Apex Class" action="{!Category}"&amp;gt;&amp;lt;apex:actionsupport event="onclick" rerender="articlespace"/&amp;gt;&amp;lt;apex:param name="category" value="Apex Class"/&amp;gt;&amp;lt;/apex:commandlink&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;             &amp;lt;li&amp;gt;&amp;lt;apex:commandlink value="Apex Triggers" action="{!Category}"&amp;gt;&amp;lt;apex:actionsupport event="onclick" rerender="articlespace"/&amp;gt;&amp;lt;apex:param name="category" value="Apex Triggers"/&amp;gt;&amp;lt;/apex:commandlink&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;             &amp;lt;li&amp;gt;&amp;lt;apex:commandlink value="Set-up and Config" action="{!Category}"&amp;gt;&amp;lt;apex:actionsupport event="onclick" rerender="articlespace"/&amp;gt;&amp;lt;apex:param name="category" value="Set-up and Config"/&amp;gt;&amp;lt;/apex:commandlink&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;             &amp;lt;li&amp;gt;&amp;lt;apex:commandlink value="Others" action="{!Category}"&amp;gt;&amp;lt;apex:actionsupport event="onclick" rerender="articlespace"/&amp;gt;&amp;lt;apex:param name="category" value="Other"/&amp;gt;&amp;lt;/apex:commandlink&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;         &amp;lt;/ul&amp;gt;&lt;br /&gt;     &amp;lt;/li&amp;gt;&lt;br /&gt; &amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;!-- end #sidebar --&amp;gt;&lt;br /&gt;&amp;lt;div style="clear: both;"&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;!-- end #page --&amp;gt;&lt;br /&gt;&amp;lt;div style="text-align: center; font-size: 0.75em;"&amp;gt;Design downloaded from &amp;lt;a href="http://www.freewebtemplates.com/"&amp;gt;free website templates&amp;lt;/a&amp;gt;.&amp;lt;/div&amp;gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&amp;lt;/apex:form&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Apex Class(controller) code is:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;public class SFUnearthed&lt;br /&gt;{&lt;br /&gt;Public List&amp;lt;Article__c&amp;gt; latestarticle =new List&amp;lt;Article__c&amp;gt;();&lt;br /&gt;public void pageload()&lt;br /&gt;{&lt;br /&gt; // Get the current month&lt;br /&gt; datetime currentdate=system.now();&lt;br /&gt; Integer currentmonth = currentdate.month();   &lt;br /&gt; latestarticle = [select Id,name,CreatedDate,Author__c,Category__c,Article_Description__c from Article__c where createdmonth__c=:currentmonth order by createddate limit 100];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Public Article__c newarticle;&lt;br /&gt;public List&amp;lt;Article__c&amp;gt; getarticles()&lt;br /&gt;{&lt;br /&gt; return latestarticle;&lt;br /&gt;}&lt;br /&gt;public void category()&lt;br /&gt;{&lt;br /&gt; String parameter = System.currentPagereference().getParameters().get('category');&lt;br /&gt; latestarticle = [select Id,name,CreatedDate,Author__c,Category__c,Article_Description__c from Article__c where category__c=:parameter order by createddate limit 100];&lt;br /&gt;}&lt;br /&gt;public Article__c getarticle()&lt;br /&gt;{&lt;br /&gt; newarticle = new Article__c();&lt;br /&gt; return newarticle;&lt;br /&gt;}&lt;br /&gt;public Pagereference SaveArticle()&lt;br /&gt;{&lt;br /&gt; system.debug('Article description is'+newarticle.Article_Description__c);&lt;br /&gt; insert newarticle;&lt;br /&gt; Pagereference articlehome = new Pagereference('/apex/SFUnearthed_Articles');&lt;br /&gt; return articlehome;&lt;br /&gt;}&lt;br /&gt;Public Pagereference createnewarticle()&lt;br /&gt;{&lt;br /&gt; Pagereference createarticle= new Pagereference('/apex/SFUnearthed_NewArticle');&lt;br /&gt; return createarticle;&lt;br /&gt;}      &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Create a Visualforce page named "SFUnearthed_NewArticle"...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have a image stored as a Static resource named "SaveArticle"..&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YExPk6W3YQg/SpaOf_F8CEI/AAAAAAAAAFw/fQ6nDH5yVSw/s1600-h/SaveButton.png"&gt;&lt;img style="cursor: pointer; width: 132px; height: 24px;" src="http://4.bp.blogspot.com/_YExPk6W3YQg/SpaOf_F8CEI/AAAAAAAAAFw/fQ6nDH5yVSw/s320/SaveButton.png" alt="" id="BLOGGER_PHOTO_ID_5374639885476694082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Save the above image to your desktop and upload as a static resource with name "SaveArticle" ....&lt;br /&gt;VF code is..&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page controller="SFUnearthed" showheader="false" &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;c:SFUnearthedHeader &amp;gt;&amp;lt;/c:SFUnearthedHeader&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div id="page"&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;apex:form &amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;!--- Copied code from blog edit ---&amp;gt;&lt;br /&gt;     &amp;lt;!-- Skin CSS file --&amp;gt;&lt;br /&gt;         &amp;lt;link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.3.0/build/assets/skins/sam/skin.css" &amp;gt;&amp;lt;/link&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;!-- Utility Dependencies --&amp;gt;&lt;br /&gt;         &amp;lt;script src="http://yui.yahooapis.com/2.3.0/build/utilities/utilities.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;!-- Needed for Menus, Buttons and Overlays used in the Toolbar --&amp;gt;&lt;br /&gt;         &amp;lt;script src="http://yui.yahooapis.com/2.3.0/build/container/container-min.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;         &amp;lt;script src="http://yui.yahooapis.com/2.3.0/build/menu/menu-min.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;         &amp;lt;script src="http://yui.yahooapis.com/2.3.0/build/button/button-beta-min.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;     &amp;lt;!-- Source file for Rich Text Editor--&amp;gt;&lt;br /&gt;         &amp;lt;script src="http://yui.yahooapis.com/2.3.0/build/editor/editor-beta-min.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;         &amp;lt;div style="position:relative;left:100px;"&amp;gt;&lt;br /&gt;        &amp;lt;table cellspacing="7"&amp;gt;&lt;br /&gt;         &amp;lt;tr&amp;gt;&amp;lt;td style="text-align:right;"&amp;gt;Title&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;apex:inputtext value="{!article.Name}"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;         &amp;lt;td style="text-align:right;"&amp;gt;Your Name&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;apex:inputtext value="{!article.Author__c}"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;         &amp;lt;td&amp;gt; Category &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; &amp;lt;apex:inputfield value="{!article.Category__c}"/&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;        &amp;lt;/table&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;     &amp;lt;div class="yui-skin-sam" style="display:none" id="editor" align="center" &amp;gt;&lt;br /&gt;         &amp;lt;pre&amp;gt;            &lt;br /&gt;             &amp;lt;apex:commandlink style="position:absolute;left:425px;" action="{!SaveArticle}" onClick="beforeTextSave()"&amp;gt; &amp;lt;apex:image url="{!$Resource.SaveArticle}"/&amp;gt; &amp;lt;/apex:commandlink&amp;gt;&lt;br /&gt;             &amp;lt;br/&amp;gt;&lt;br /&gt;             &amp;lt;apex:inputtextarea id="msgpost" cols="500" rows="50" value="{!article.Article_Description__c}"/&amp;gt;&lt;br /&gt;         &amp;lt;/pre&amp;gt;&lt;br /&gt;     &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;script type="text/javascript" &amp;gt;&lt;br /&gt;     var myEditor;&lt;br /&gt;     window.onload = function init()&lt;br /&gt;     {&lt;br /&gt;      myEditor = new YAHOO.widget.Editor('{!$Component.msgpost}', {&lt;br /&gt;        height: '400px', width: '722px', dompath: true, animate: true });&lt;br /&gt;      myEditor.render();&lt;br /&gt;      document.getElementById('editor').style.display='';&lt;br /&gt;     }&lt;br /&gt;     function beforeTextSave()&lt;br /&gt;     {&lt;br /&gt;      document.getElementById('{!$Component.msgpost}').value = myEditor.getEditorHTML();&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt; &amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- End of copied code from blog edit --&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/apex:form&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div style="text-align: center; font-size: 0.75em;"&amp;gt;Design downloaded from &amp;lt;a href="http://www.freewebtemplates.com/"&amp;gt;free website templates&amp;lt;/a&amp;gt;.&amp;lt;/div&amp;gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Create a Visualforce page named "SFUnearthed_resources"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;VF code is..&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page showheader="false"&amp;gt;&lt;br /&gt;&amp;lt;apex:form &amp;gt;&lt;br /&gt;&amp;lt;c:SFUnearthedHeader &amp;gt;&amp;lt;/c:SFUnearthedHeader&amp;gt;&lt;br /&gt;&amp;lt;div id="page"&amp;gt;&lt;br /&gt; &amp;lt;div id="content"&amp;gt;&lt;br /&gt; &amp;lt;div class="post" &amp;gt;&lt;br /&gt;     &amp;lt;h2 class="title"&amp;gt;Salesforce.com Resources and Guides&amp;lt;/h2&amp;gt;&lt;br /&gt;     &amp;lt;p class="date"&amp;gt;All in one place&amp;lt;/p&amp;gt;&lt;br /&gt;     &amp;lt;p class="meta"&amp;gt;&amp;lt;em&amp;gt;Last updated on 25 Aug 2009&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;     &amp;lt;div class="entry" style="font-size:30px;"&amp;gt;&lt;br /&gt;      &amp;lt;p&amp;gt; Here you can find all resources related to Salesforce.com at one place. All resources are not hosted on this site but rather would be links to other sites.&amp;lt;/p&amp;gt;&lt;br /&gt;      &amp;lt;p&amp;gt; &amp;lt;strong&amp;gt; Visualforce &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;      &amp;lt;p&amp;gt; To get started with Visualforce you will have to download the Visualforce developer's guide from &amp;lt;a href="http://wiki.developerforce.com/index.php/Documentation" target="_blank" &amp;gt;here &amp;lt;/a&amp;gt;&lt;br /&gt;          .You can find all resources related to Salesforce.com on this page.&amp;lt;/p&amp;gt;&lt;br /&gt;          &amp;lt;p&amp;gt; Once you get started with visualforce,you will find it difficult to refer the PDF for syntax verifications. In such cases you can click on the "Component Reference" link on your page editor to view&lt;br /&gt;           a complete list of all tags with the supported attributes &amp;lt;/p&amp;gt;&lt;br /&gt;           &amp;lt;p&amp;gt; It is obvious that you will get stuck at places when you develop applications using visualforce. In such cases post your problem&lt;br /&gt;               on the community forums -&amp;lt;a href="http://community.salesforce.com" target="_blank"&amp;gt; Click Here &amp;lt;/a&amp;gt;. Experts from around the world&lt;br /&gt;               will help you find solutions. &amp;lt;/p&amp;gt;&lt;br /&gt;       &lt;br /&gt;      &amp;lt;/p&amp;gt;&lt;br /&gt;     &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div style="text-align: center; font-size: 0.75em;"&amp;gt;Design downloaded from &amp;lt;a href="http://www.freewebtemplates.com/"&amp;gt;free website templates&amp;lt;/a&amp;gt;.&amp;lt;/div&amp;gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;!-- end #content --&amp;gt;&lt;br /&gt;&amp;lt;/apex:form&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;STEP5:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Its done!!!!... Now go to your site detail page and set the visualforce page "SFUnearthed_articles" as the site Home Page..&lt;br /&gt;&lt;br /&gt;If you are not sure how to create a site then &lt;a href="http://salesforceexperts.blogspot.com/2009/08/forcecom-sites-sneak-peak.html"&gt;click here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-962873361645090031?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/962873361645090031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/08/building-blog-applicationwebsite-using.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/962873361645090031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/962873361645090031'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/08/building-blog-applicationwebsite-using.html' title='Building a Blog Application(Website) using Visualforce and Force.com Sites'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_YExPk6W3YQg/SpaLIzf6W2I/AAAAAAAAAFo/AFANJg4hO_8/s72-c/CreatenewArticle.png' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-4146468767333178087</id><published>2009-08-25T09:15:00.000-07:00</published><updated>2009-08-25T09:21:03.191-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='force.com sites'/><title type='text'>My Force.com Site</title><content type='html'>Dear All,&lt;br /&gt;&lt;br /&gt;As i had mentioned in my previous post, i had finally created a site on the Force.com platform. I couldn't post many articles this month because all of my free time was spent on the site development. I will share all of my source code and experiences here..  but after some rest -:)&lt;br /&gt;&lt;br /&gt;Please do visit my site and thanks for your support... &lt;a href="http://edwinvijay-developer-edition.na5.force.com/"&gt;Click here &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can also find the link in the sidebar...&lt;br /&gt;&lt;br /&gt;Cheers!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-4146468767333178087?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/4146468767333178087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/08/my-forcecom-site.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/4146468767333178087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/4146468767333178087'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/08/my-forcecom-site.html' title='My Force.com Site'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-4751844360297101727</id><published>2009-08-20T02:22:00.000-07:00</published><updated>2010-07-22T01:51:06.460-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='salesforce'/><category scheme='http://www.blogger.com/atom/ns#' term='email template'/><category scheme='http://www.blogger.com/atom/ns#' term='visualforce page'/><title type='text'>Visualforce Email Template</title><content type='html'>Normally we create email templates by navigating to Setup--&amp;gt; Communication Templates --&amp;gt; Email Templates .. Merge fields are used in these templates to display data...&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;To enable users to create flexible email templates, Visualforce Email templates was introduced.. You can create templates with extensive HTML and Visualforce coding so as to develop some really appealing and effective templates.. But there are some limitations when you create a visualforce email template.. Before going into the limitations let us create a simple template now..&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Create a Visualforce Email template by navigating to&lt;br /&gt;&lt;b&gt;Setup --&amp;gt; Communication Templates --&amp;gt; Email Templates --&amp;gt; New Template&lt;br /&gt;&lt;/b&gt;Select "Visualforce" in the first step...&lt;br /&gt;&lt;br /&gt;Give a tilte,name,Subject for your template. Next select the Receipent type and Related to (Related to denotes the object from which you would want data to be displayed in your Email).. Click "Save".... Remember to check "Available for use" to make your email template available for use in Workflow email alerts and whereever it may be useful.... &lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_YExPk6W3YQg/So9s3mQgPDI/AAAAAAAAAFY/5VWzGa3EvPI/s1600-h/template+detail.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5372632582894664754" src="http://4.bp.blogspot.com/_YExPk6W3YQg/So9s3mQgPDI/AAAAAAAAAFY/5VWzGa3EvPI/s320/template+detail.JPG" style="cursor: pointer; height: 232px; width: 320px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;You will now see the template detail Page... In the "Email template" section click on "Edit Template" button... This will take you to a Visualforce Page editor...&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_YExPk6W3YQg/So9tGXHAGdI/AAAAAAAAAFg/gbGfkfl6AQ8/s1600-h/templat+edit.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5372632836526315986" src="http://3.bp.blogspot.com/_YExPk6W3YQg/So9tGXHAGdI/AAAAAAAAAFg/gbGfkfl6AQ8/s320/templat+edit.JPG" style="cursor: pointer; height: 191px; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;You can also click on "Attach file" button in "Standard Attachments" section to attach a file from your desktop to your email..&lt;br /&gt;&lt;br /&gt;Below is a small piece of code... You will have to put this code in the editor that appears when you click on "Edit template" button&lt;br /&gt;&lt;span style="color: #cc6600; font-weight: bold;"&gt;Note:&lt;/span&gt; I have used "htmlEmailBody" for including HTML tags in my template.. Also, since the "Relatedto" is "Account" i am displaying Account information in my template..&lt;/div&gt;&lt;div&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;messaging:emailTemplate subject="Testing Visualforce Email Template" recipientType="User" &lt;span class="Apple-style-span" style="color: #ff6600;"&gt;&lt;b&gt;relatedToType="Account&lt;/b&gt;&lt;/span&gt;"&amp;gt;&lt;br /&gt;&amp;lt;messaging:HtmlEmailBody &amp;gt;&lt;br /&gt;Account Name : {!Relatedto.Name} &amp;lt;br/&amp;gt;&lt;br /&gt;Account Description : {!Relatedto.Description} &amp;lt;br/&amp;gt;&lt;br /&gt;&amp;lt;/messaging:htmlEmailBody&amp;gt;&lt;br /&gt;&amp;lt;/messaging:emailTemplate&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #b45f06;"&gt;&lt;b&gt;What you Can...&lt;/b&gt;&lt;/div&gt;With Visualforce email templates you can display any data from the related object in any format you wish.. If Relatedtotype =Account you can display any field of the Account and you can also display the related lists of Account .. For ex you can create a datatable with the value="{!Relatedto.Contacts}"... Similarly you can display other related lists...&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #b45f06;"&gt;&lt;b&gt;What you Cannot...&lt;/b&gt;&lt;/div&gt;You cannot use the &amp;lt;apex:page&amp;gt; tag inside your Email template.. Having said this you cannot use pageblock, pageblocksection or any other tag which is a child of the &amp;lt;apex:page&amp;gt; tag.. You can use outputfield,outputtext,datatable etc.. Do not attempt too much of styling and formatting for your email templates unless it is extremely necessary because you would'nt know how your email would be rendered by different providers.. Always use simple and standard formatting so that your email displays uniformly across all providers...&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-4751844360297101727?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/4751844360297101727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/08/visualforce-email-template.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/4751844360297101727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/4751844360297101727'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/08/visualforce-email-template.html' title='Visualforce Email Template'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_YExPk6W3YQg/So9s3mQgPDI/AAAAAAAAAFY/5VWzGa3EvPI/s72-c/template+detail.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-7019432646025805798</id><published>2009-08-05T06:01:00.000-07:00</published><updated>2009-08-19T08:37:16.045-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='force.com sites'/><category scheme='http://www.blogger.com/atom/ns#' term='visualforce'/><title type='text'>Force.com Sites - A sneak peak</title><content type='html'>Force.com sites is a new concept released by salesforce. Under this concept, you can create public sites which can be accessed by anyone. You do not need a salesforce username and password to access a site.&lt;br /&gt;&lt;br /&gt;Navigate to Set-up --&gt; Develop --&gt; Sites to create a new site.  You will first have to register your force.com domain name. This domain name comes appended with the salesforce domain name. For ex: &lt;strong&gt;&lt;span style="color: rgb(204, 102, 0); font-weight: bold;"&gt;sfunearthed&lt;/span&gt;-developer-edition.na5.force.com&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Once done, you can now create your site.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 102, 0);"&gt;Security:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When you create a site , a profile with the name as site label is automatically created. So, users accessing your site would belong to this profile... You can view and edit the profile by clicking on "Public Access Settings" button on the site detail page...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_YExPk6W3YQg/SoO3yrZNNZI/AAAAAAAAADg/bXxlmf1ACto/s1600-h/Site+profile.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 136px;" src="http://1.bp.blogspot.com/_YExPk6W3YQg/SoO3yrZNNZI/AAAAAAAAADg/bXxlmf1ACto/s320/Site+profile.JPG" alt="" id="BLOGGER_PHOTO_ID_5369337262025553298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Using this profile you can grant access to objects, fields etc to be visible on the Site.&lt;br /&gt;&lt;br /&gt;You will have to create a home page (Visualforce page) to set as the site home page.&lt;br /&gt;&lt;br /&gt;After you have done all this, and when you view your site you may not see certain fields. This is mostly because of the security settings. The site profile has to be granted access in the "field level security" settings also. But, the Site profile does not appear in the list of profiles when you navigate to "Field level security". This is how you have to do it...&lt;br /&gt;&lt;br /&gt;Navigate to the SITE Profile detail page by clicking on the "Public Access Settings" as shown above...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_YExPk6W3YQg/SowZ7HFgCwI/AAAAAAAAAEI/ylafd35vkqw/s1600-h/siteprofiledetail.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 159px;" src="http://3.bp.blogspot.com/_YExPk6W3YQg/SowZ7HFgCwI/AAAAAAAAAEI/ylafd35vkqw/s320/siteprofiledetail.JPG" alt="" id="BLOGGER_PHOTO_ID_5371696958851255042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can see a section called "Field level Settings"... Click on "View" against the desired object...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_YExPk6W3YQg/Sowa2j4KtAI/AAAAAAAAAEQ/_zHW9_NW2UQ/s1600-h/siteprofiledetailpage.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 174px;" src="http://3.bp.blogspot.com/_YExPk6W3YQg/Sowa2j4KtAI/AAAAAAAAAEQ/_zHW9_NW2UQ/s320/siteprofiledetailpage.JPG" alt="" id="BLOGGER_PHOTO_ID_5371697980192240642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click on "Edit" to edit the field level accessibility settings....&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_YExPk6W3YQg/Sowbk0n18zI/AAAAAAAAAEY/AiPQKFLFcHI/s1600-h/editsiteprofile.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 160px;" src="http://3.bp.blogspot.com/_YExPk6W3YQg/Sowbk0n18zI/AAAAAAAAAEY/AiPQKFLFcHI/s320/editsiteprofile.JPG" alt="" id="BLOGGER_PHOTO_ID_5371698774961156914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 102, 0);"&gt;Cloud Developer challenge..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A month ago i signed up for the Cloud Developer challenge, but then i did not have time to create an amazing application nor did i have an idea...  I was just longing for an idea and later dropped it...&lt;br /&gt;&lt;br /&gt;But then the deadline was extended to August end 09.. by this time i realized that i finally got an idea.. More about that later..&lt;br /&gt;&lt;br /&gt;So i signed up for the free 100 User force.com platform.. it was really amazing.. they offer you 1GB of storage free of cost.. the earlier developer editions used to have only 10MB.. 1GB is more than enough for a small organization to host its application on the force.com platform.. and remember "all free"....&lt;br /&gt;&lt;br /&gt;I wanted to build an application which would be very colorful with lot of images (in short i wanted the application to have the salesforce look and feel 0%).... I am not an expert in HTML nor CSS but i was sure i knew the fundamentals...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.w3schools.com/"&gt;W3Schools&lt;/a&gt; was the best and the fast.. U can learn HTML and CSS within hours...&lt;br /&gt;&lt;br /&gt;Next, i wanted a template with the Images and all CSS styles.. I did not want to write down everything from scratch.. If you are an expert in that area and if you have experience in working with &lt;a href="http://www.adobe.com/products/dreamweaver/"&gt;Dreamweaver&lt;/a&gt; or any such tools you can very well do that... These tools actually reduce your web pages development time drastically...&lt;br /&gt;&lt;br /&gt;There are hundreds of websites which offer you free web templates... to name a few&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.2createawebsite.com/build/templates.html"&gt;http://www.2createawebsite.com/build/templates.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.freewebtemplates.com/"&gt;http://www.freewebtemplates.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.templatesbasket.com/"&gt;http://www.templatesbasket.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I downloaded a template from one such site.. Now i had all my images, CSS and a sample HTML file... I had to modify the file and insert Visualforce tags wherever applicable...&lt;br /&gt;&lt;br /&gt;So, i logged into my force.com platform and created a SITE... Next i created  a VisualForce page to use in the Site and OOPS!!! i found out that i couldn't create APEX Classes(Controller/Extension)..  I was sure there should be some way out there and i posted it in the community.. And yes, there was a way.. You cannot create an Apex Class directly in the free platform, you will have to develop it in a developer ORG and deploy it into your free platform.. same as how you move code from test to production...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;About the application i have started to develop..&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I thought of extending this blog by making visitors contribute to this blog as well.. I could be doing something in ten steps which can be done by someone else in three or less steps.. So why not share ideas..&lt;br /&gt;&lt;br /&gt;Meanwhile, i found &lt;a href="http://wiki.developerforce.com/index.php/Visualforce_blog"&gt;this article &lt;/a&gt;very useful. It has been posted by Ron Hess. My application would be an extension upon this...&lt;br /&gt;&lt;br /&gt;This article will expand as and when i encounter problems and solutions in my application development....&lt;br /&gt;&lt;br /&gt;You can soon see a link in the sidebar pointing to the site :-) ... Hope i can have people to contribute articles...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-7019432646025805798?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/7019432646025805798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/08/forcecom-sites-sneak-peak.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7019432646025805798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7019432646025805798'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/08/forcecom-sites-sneak-peak.html' title='Force.com Sites - A sneak peak'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_YExPk6W3YQg/SoO3yrZNNZI/AAAAAAAAADg/bXxlmf1ACto/s72-c/Site+profile.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-5528232818695431104</id><published>2009-07-30T08:05:00.000-07:00</published><updated>2009-07-30T09:06:59.450-07:00</updated><title type='text'>Standard new/edit page Vs your Visualforce Page</title><content type='html'>I just found this stuff to be very exciting and thought would be worth sharing...&lt;br /&gt;&lt;br /&gt;I was reading through the forums and found a particular post.. the description is like this..&lt;br /&gt;&lt;br /&gt;The "New" button has to be overridden with a Visualforce Page. When the Visualforce page loads some calculations are performed and the user is either redirected to the standard new/edit page or he stays in the same Visualforce page... And the interesting part was the standard new/edit page has to be prefilled with data passed from the visualforce page...&lt;br /&gt;&lt;br /&gt;This is how it can be done..  We will take Account as an example.. We will override the Account new button with a visualforce page..&lt;br /&gt;&lt;br /&gt;I will create a Visualforce page.. Just a small one&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page standardController="Account" extensions="newvsold" action="{!pageredir}"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And the Apex class would be..&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;public class newvsold&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;public newvsold(ApexPages.StandardController controller)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;public Pagereference pageredir()&lt;br /&gt;{&lt;br /&gt;    Pagereference newpage = new Pagereference ('/001/e?retURL=/001/');&lt;br /&gt;    return newpage;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So go ahead and override your "new" button with the Visualforce page you just created.. Now when you click on "New" button under Accounts what do you observe..&lt;br /&gt;&lt;br /&gt;Yes the same old Account new page is displayed.. It is because we call a method in the "action" attribute of the page tag..(If you are unclear about the "action" attribute then read this article &lt;a href="http://salesforceexperts.blogspot.com/2009/07/overriding-standard-buttons-with.html"&gt;here &lt;/a&gt;).. this method redirects the user to the normal new page.. Now let's analyze the URL we have specified in the Pagerefernce...&lt;br /&gt;&lt;br /&gt;/001/e?retURL=/001/ --- The number 001 indicates Account, e indicated edit and retURL specifies where to go after hitting any button on the page.. Like 001 for Account all objects have a number.. You can always check it in the URL bar..&lt;br /&gt;&lt;br /&gt;I simply did a redirection.. you can add any complex logic there...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;Now going to the interesting part.. How will i prepopulate my new page with values.... Here it is&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Go to the Account "new" page...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_YExPk6W3YQg/SnHAOvJZBRI/AAAAAAAAADI/zx8MYjvI2iQ/s1600-h/newpage.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 221px;" src="http://3.bp.blogspot.com/_YExPk6W3YQg/SnHAOvJZBRI/AAAAAAAAADI/zx8MYjvI2iQ/s320/newpage.JPG" alt="" id="BLOGGER_PHOTO_ID_5364279990581527826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Right-click and select "View Source" or "View Page Source".... and in the window that appears search for "Account Name"...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YExPk6W3YQg/SnHCBBoAbxI/AAAAAAAAADQ/98vGV8xDl6U/s1600-h/newpagehtml.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 150px;" src="http://4.bp.blogspot.com/_YExPk6W3YQg/SnHCBBoAbxI/AAAAAAAAADQ/98vGV8xDl6U/s320/newpagehtml.JPG" alt="" id="BLOGGER_PHOTO_ID_5364281954046865170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now after the place where you see "Account Name" look for "&amp;lt;input" and note the "id"&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_YExPk6W3YQg/SnHDGfVZLWI/AAAAAAAAADY/Mu5wThjTGYY/s1600-h/newpagehtmlinput.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 117px;" src="http://2.bp.blogspot.com/_YExPk6W3YQg/SnHDGfVZLWI/AAAAAAAAADY/Mu5wThjTGYY/s320/newpagehtmlinput.JPG" alt="" id="BLOGGER_PHOTO_ID_5364283147432832354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In our specific case the id is "acc2" which denotes Account Name....&lt;br /&gt;&lt;br /&gt;In the url bar just type ... https://yoursalesforceinstance.com/001/e?acc2=test&amp;amp;retURL=/001/&lt;br /&gt;&lt;br /&gt;Or you can modify the Apex Code as below...&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;public class newvsold&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;   public newvsold(ApexPages.StandardController controller)&lt;br /&gt;   {&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;   public Pagereference pageredir()&lt;br /&gt;   {&lt;br /&gt;       Pagereference newpage = new Pagereference ('/001/e?acc2=test&amp;amp;retURL=/001/');&lt;br /&gt;       return newpage;&lt;br /&gt;   }  &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;"acc2" denotes Account Name.. similarly all fields have own id... and you can pass values for as many fields as you like unless you do not exceed the maximum URL size...&lt;br /&gt;&lt;br /&gt;Even though this sounds a very strange method.. i just thought it might help someone somewhere..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-5528232818695431104?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/5528232818695431104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/07/standard-newedit-page-vs-your.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/5528232818695431104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/5528232818695431104'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/07/standard-newedit-page-vs-your.html' title='Standard new/edit page Vs your Visualforce Page'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_YExPk6W3YQg/SnHAOvJZBRI/AAAAAAAAADI/zx8MYjvI2iQ/s72-c/newpage.JPG' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-697912578696756745</id><published>2009-07-24T01:23:00.000-07:00</published><updated>2009-07-28T06:46:25.035-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mass email example'/><category scheme='http://www.blogger.com/atom/ns#' term='email from apex'/><title type='text'>Sending an Email from your Apex Class</title><content type='html'>There may be situations in which you would not want a workflow email alert, because either your criteria to send an email may be too complex or the person whom you want to send an email has to be determined dynamically.....  In such situations you can choose to send an email from a Apex Class...&lt;br /&gt;&lt;br /&gt;Sending an email from a Apex Class is so easy... Basically there are two categories&lt;br /&gt;&lt;br /&gt;SingleEmailMessage - This is used when you want to send an email to a single person..&lt;br /&gt;&lt;br /&gt;MassEmailMessage - This is used when you want to send an email to a group...&lt;br /&gt;&lt;br /&gt;First, let us see about the SingleEmailMessage type....&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step1:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create a Apex Class with the following code....&lt;br /&gt;&lt;br /&gt;&lt;pre   style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); line-height: 14px; width: 100%;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;font-size:12px;"&gt;&lt;code&gt;public class testemail&lt;br /&gt;{&lt;br /&gt;private final Contact con;&lt;br /&gt;public testemail(ApexPages.StandardController controller)&lt;br /&gt;{&lt;br /&gt;this.con=(Contact)controller.getRecord();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void SendEmail()&lt;br /&gt;{&lt;br /&gt;Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();&lt;br /&gt;mail.setTargetObjectId(con.Id);&lt;br /&gt;mail.setTemplateId('&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;00X90000000QHUD&lt;/span&gt;');&lt;br /&gt;Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Mention a valid Email Template ID in the colored part...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create a VF page named as "testemail" or anything as your wish , and paste the code below..&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page standardcontroller="Contact" extensions="testemail"&amp;gt;&lt;br /&gt;&amp;lt;apex:form&amp;gt;&lt;br /&gt;&amp;lt;apex:commandButton value="Send Email!" action="{!SendEmail}"/&amp;gt;&lt;br /&gt;&amp;lt;/apex:form&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Go to the url bar and type&lt;br /&gt;https://yoursalesforceinstance.com/apx/testemail?id=&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;00390000001TqnV&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Note that i have mentioned a valid Contact Id of my organization, make sure you mention a valid contact ID of your SF instance.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 4:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You should be able to view the page below&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_YExPk6W3YQg/SmmEpX2-c2I/AAAAAAAAADA/ntDJnwZipeM/s1600-h/emailexample.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 220px;" src="http://3.bp.blogspot.com/_YExPk6W3YQg/SmmEpX2-c2I/AAAAAAAAADA/ntDJnwZipeM/s320/emailexample.JPG" alt="" id="BLOGGER_PHOTO_ID_5361962677675389794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click on the "Send Email" button and your email is sent to the Email address of the Contact mentioned in the url.....&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;Analyzing the code&lt;/span&gt;.. we can see that four simple lines are enough to send a mail&lt;br /&gt;&lt;br /&gt;The first line instantiates an instance of the SingleEmailMessage object...&lt;br /&gt;&lt;br /&gt;The second line associates the Contact ID to the email.. this is used to retrieve the toaddress and any merge fields that may be included in your email template...&lt;br /&gt;&lt;br /&gt;Note that in the third line we have hardcoded the Email Template ID... This ID belongs to my organization, you will have to replace it with your's...&lt;br /&gt;&lt;br /&gt;And in the final step the sendemail method is called and the email is sent...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;Template ID&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do you think its weird to hardcode a Template Id in your code.. yes, definitely it is..&lt;br /&gt;&lt;br /&gt;There is a EmailTemplate object which you can query and retrieve the template ID you require... below is a small sample which you can plug-in into this example after modifying appropriately..&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;emailtemplatelist = new List&amp;lt;EmailTemplate&amp;gt;();&lt;br /&gt;for ( EmailTemplate e : [select Id,Name,Subject,body from EmailTemplate where name like :userinputtemplatename+'%'])&lt;br /&gt;{&lt;br /&gt;emailtemplatelist.add(e);&lt;br /&gt;}  &lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 102, 0);"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Sending an email without a Template -&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The above method is used only when you want to associate a Email Template to your email. When you use an Email Template you will have to specify a valid Contact Id, or User Id, or Lead Id as the target Object Id. If you specify any other object's Id your code wouldn't work.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you do not want to use a template you can specify the toAddress, Subject and Body of the email using the appropriate methods. Below is a piece of code which sends an email not associated to an email template. &lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt; String[] toaddress = new String[]{};&lt;br /&gt;toaddress.add(emailaddress[i]);&lt;br /&gt;Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();&lt;br /&gt;mail.setToAddresses(toaddress);&lt;br /&gt;mail.setsubject(subject);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hope the methods are self-explanatory...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 102, 0);"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;You have a Email Template but you dont have a Contact,or User,or Lead ????????&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;There may and will arise situations in which you have a Email Template.. You would not have any merge fields in this Email Template. ..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You would like to send an Email using this Email Template.. But you do not have a Contact, or a Lead or a User to set as the targtObjectId...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In such cases, you can create a Contact on the fly, send the email and then delete the Contact... Remember to create the contact with Name, and Email since these are mandatory fields to send an Email...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 102, 0);"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Sending Mass Email &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now that you have learnt to use the single email message, the mass email message is much simpler to understand...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You just need to replace the targetobjectId with setTargetObjectIds... And of course, you will have to specify a list of valid Contact,User or Lead ID's...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For the same example, just replace the Apex code as below...&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: pre; widows: 2; word-spacing: 0px;font-family:-webkit-monospace;font-size:13;"  &gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;public class testemail&lt;br /&gt;{&lt;br /&gt;  private final List&amp;lt;Id&amp;gt; contactids;&lt;br /&gt;  public List&amp;lt;Contact&amp;gt; con;&lt;br /&gt;  public testemail(ApexPages.StandardController controller)&lt;br /&gt;  {&lt;br /&gt;     con = [select Id from Contact limit 250 ];&lt;br /&gt;     for(Integer i=0;i&amp;lt;250;i++)&lt;br /&gt;     {&lt;br /&gt;         contactids.add(con[i].Id);&lt;br /&gt;      }  &lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void SendEmail()&lt;br /&gt;  {&lt;br /&gt;       Messaging.MassEmailMessage mail = new Messaging.MassEmailMessage();&lt;br /&gt;       mail.setTargetObjectIds(contactids);&lt;br /&gt;       mail.setTemplateId('00X90000000QHUD');&lt;br /&gt;       Messaging.sendEmail(new Messaging.MassEmailMessage[] { mail });&lt;br /&gt;  }  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;What we do is, query the contact object and get a list of Contact Id's... We then set this list of ID's as the targetobjectId's....&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-697912578696756745?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/697912578696756745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/07/sending-email-from-your-apex-class.html#comment-form' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/697912578696756745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/697912578696756745'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/07/sending-email-from-your-apex-class.html' title='Sending an Email from your Apex Class'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_YExPk6W3YQg/SmmEpX2-c2I/AAAAAAAAADA/ntDJnwZipeM/s72-c/emailexample.JPG' height='72' width='72'/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-6340064709684421270</id><published>2009-07-22T00:17:00.000-07:00</published><updated>2010-07-22T01:33:55.206-07:00</updated><title type='text'>Overriding Standard buttons with Visualforce Page and redirecting based on User</title><content type='html'>Overriding a Standard button is pretty straightforward.. but when you override a standard button with a visualforce page all users in your organization would see this page...&lt;br /&gt;&lt;br /&gt;So, let's suppose you want one set of users to view a page (for ex: viewpage1) and another set of users to view another page (for ex:viewpage2).&lt;br /&gt;&lt;br /&gt;First of all, create the two visualforce pages viewpage1 and viewpage2&lt;br /&gt;&lt;br /&gt;Secondly, create a new visualforce page called "viewpageredir". This page would contain the following code...&lt;br /&gt;&lt;br /&gt;Note that i have created this page for the "Account" object. I would use this page to override my Account View button. You can use this code for any object by specifying the name of the object in the&amp;nbsp;&lt;span style="color: #333399; font-size: small;"&gt;&lt;/span&gt;&lt;span style="color: #b45f06;"&gt;standardcontroller&lt;/span&gt; attribute.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page showheader="false" action="{!pageredirect}" &lt;span style="color: #333399; font-weight: bold;"&gt;standardcontroller&lt;/span&gt;="Account" extensions="pageredir"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;    &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The Apex Code would be...&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;public class pageredir&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;public pageredir(ApexPages.StandardController controller) {&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public Pagereference pageredirect()&lt;br /&gt;{&lt;br /&gt;if (Userinfo.getUserName() == 'testview1@org.com')&lt;br /&gt;{&lt;br /&gt;Pagereference p = Page.viewpage1;&lt;br /&gt;return p;&lt;br /&gt;} &lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;Pagereference p = Page.viewpage2;  &lt;br /&gt;return p;&lt;br /&gt;}  &lt;br /&gt;}      &lt;br /&gt;}    &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now, let's see how this works.. As you can see "viewpageredir" has only one tag "&amp;lt;apex:page&amp;gt;" . There is no other content in this page as we are using it only to redirect the user to his specific page.&lt;br /&gt;&lt;br /&gt;We, have an action attribute in the page. The action method is called when the page loads. This causes the method "pageredirect" to be called. In this page we check the current user's Username. "Userinfo" can not only get the username but also the ID, ProfileId etc. See the Apex Language reference for the entire list.&lt;br /&gt;&lt;br /&gt;Based on the username, we redirect the user to the desired page......&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-6340064709684421270?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/6340064709684421270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/07/overriding-standard-buttons-with.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/6340064709684421270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/6340064709684421270'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/07/overriding-standard-buttons-with.html' title='Overriding Standard buttons with Visualforce Page and redirecting based on User'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-6866486457368364269</id><published>2009-07-20T03:35:00.000-07:00</published><updated>2011-03-04T16:27:47.925-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='__r'/><category scheme='http://www.blogger.com/atom/ns#' term='WSDL'/><category scheme='http://www.blogger.com/atom/ns#' term='__c'/><category scheme='http://www.blogger.com/atom/ns#' term='look-up'/><title type='text'>Understanding relationships in Salesforce</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Relationship between objects are created when you create a field of type Look-up... Of course, Salesforce standard objects come with their own built-in relationships.. Let's categorize relationships into two categories...&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Standard Relationship&lt;/li&gt;&lt;li&gt;Custom Relationship&lt;/li&gt;&lt;/ul&gt;We all know how a relationship looks like in the UI, for ex: Account - Contact relationship. You can see that one Account can have  many Contacts associated to it . When you create or edit a Contact you will have to select a Account from the look-up dialog to establish a relationship...&lt;br /&gt;&lt;br /&gt;Now, that's all what we know.. But at the database level there is much more to be explored..&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #cc0000; font-weight: bold;"&gt;&lt;u&gt;Standard Relationship&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Standard relationships are the one's that come pre-built between Standard objects in Salesforce.&lt;br /&gt;&lt;br /&gt;Let's understand the Account-Contact relationship.. In Contact you can find a field called Account.. This field establishes the relationship.. When you view a Contact record you will see the Account Name populated in this field... But guess what, that is not actually stored in the database..&lt;br /&gt;&lt;br /&gt;The ID of the Account is stored in the look-up field. Hence, all look-up fields would store the ID.&lt;br /&gt;&lt;br /&gt;Here is how the actual database fields are....&lt;br /&gt;&lt;br /&gt;AccountId -  This stores the ID of the Account.&lt;br /&gt;Account -- This stores the relationship of the Account.&lt;br /&gt;&lt;br /&gt;So, here come's the interesting part. By using the "Account" relationship you can access any field of the associated Account.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;[Select Account.Name,Account.BillingCity from Contact]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And what more,   you can retrieve data from a relationship to a relationship as well...&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;[Select Account.Name,Account.BillingCity,Account.Owner.Name from Contact]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So, they can be multi-level....&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #ff9966; font-weight: bold;"&gt;What's the advantage??&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The better you understand relationships, the better you can construct complex nested queries and try to minimize the number of queries used.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #cc0000; font-weight: bold;"&gt;Custom Relationship:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is same as the standard relationship except that the naming convention has some differences...&lt;br /&gt;&lt;br /&gt;THE __c and __r :&lt;br /&gt;&lt;br /&gt;In our same example, if we create a custom Account look-up field on Contact and name it as CustomAccount... then accessing the relationship is as follows...&lt;br /&gt;&lt;br /&gt;CustomAccount__c --&amp;gt; Equivalent of AccountId, holds the ID of the Account.&lt;br /&gt;&lt;br /&gt;CustomAccount__r --&amp;gt; Equivalent of Account, holds the relationship&lt;br /&gt;&lt;br /&gt;Our example query will modify as below..&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;[Select CustomAccount__r.Name,CustomAccount__r.BillingCity,CustomAccount__r.Owner.Name from Contact]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Wondering how i came to know about this and where will you find more details on this????&lt;br /&gt;&lt;br /&gt;Go to Setup--&amp;gt; Develop --&amp;gt; API and click on "Generate Enterprise WSDL"&lt;br /&gt;&lt;br /&gt;The WSDL shows the actual way data is stored, the actual field names, the actual relationships etc...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-6866486457368364269?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/6866486457368364269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/07/understanding-relationships-in.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/6866486457368364269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/6866486457368364269'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/07/understanding-relationships-in.html' title='Understanding relationships in Salesforce'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-7506342385705309790</id><published>2009-07-14T09:18:00.000-07:00</published><updated>2009-07-15T07:11:47.170-07:00</updated><title type='text'>Getter and setter methods - What are they??</title><content type='html'>Well, once you start using a controller or an extension you will get used to these words...&lt;br /&gt;&lt;br /&gt;So, it is good that we understand what these methods really do..&lt;br /&gt;&lt;br /&gt;Getter and setter methods are used to pass data from your visualforce page to your controller and vice versa..&lt;br /&gt;&lt;br /&gt;Let's take a very simple scenario... Let's assume you want to display a textbox in your visualforce page.. When the user enters some value in this textbox and clicks on a button you want the value entered by the user in your Apex class (ie. basically your controller or extension)&lt;br /&gt;&lt;br /&gt;So go ahead and create a simple visualforce page.. the code for this would be&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;apex:page controller=&amp;quot;simplegetset&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;apex:form&amp;gt;&lt;br /&gt;    &amp;lt;apex:outputlabel value=&amp;quot;Enter your name here&amp;quot;/&amp;gt;&lt;br /&gt;       &amp;lt;apex:inputtext value=&amp;quot;{!userinput}&amp;quot;/&amp;gt;          &lt;br /&gt;  &amp;lt;/apex:form&amp;gt;    &lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The Apex code for this page would be...&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;public class simplegetset&lt;br /&gt;{&lt;br /&gt;    public String userinput{get; set;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now, the variable "userinput" in your Apex class will store the value entered by the user....&lt;br /&gt;&lt;br /&gt;Let's analyze the methods now...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Get&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The "get" method is used to pass data from your Apex code to your Visualforce page.. In our example we are not passing any value.. hence, when your page loads initially the textbox will have a empty value...&lt;br /&gt;&lt;br /&gt;So, lets modify our code and pass a default value to the textbox.. Change the Apex code as follows..&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;public class simplegetset&lt;br /&gt;{  &lt;br /&gt;    public String userinput;&lt;br /&gt;    public String getuserinput(){return 'John';}&lt;br /&gt;   &lt;br /&gt;    public void setuserinput(String userinput)&lt;br /&gt;    {&lt;br /&gt;        this.userinput = userinput;&lt;br /&gt;    }   &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You can now see that your page loads with a value 'John'...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Set&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The "set" method is used to pass values from your visualforce page to the controller...  In our example the variable "userinput" will be storing the value entered in the textbox..&lt;br /&gt;&lt;br /&gt;Now modify your VF page as below..&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;apex:page controller=&amp;quot;simplegetset&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;apex:form&amp;gt;&lt;br /&gt;    &amp;lt;apex:outputlabel value=&amp;quot;Enter your name here&amp;quot;/&amp;gt;&lt;br /&gt;       &amp;lt;apex:inputtext value=&amp;quot;{!userinput}&amp;quot;&amp;gt;&lt;br /&gt;           &amp;lt;apex:actionsupport event=&amp;quot;onclick&amp;quot; rerender=&amp;quot;display&amp;quot; /&amp;gt;&lt;br /&gt;       &amp;lt;/apex:inputtext&amp;gt;                   &lt;br /&gt;    &amp;lt;apex:outputpanel id=&amp;quot;display&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;apex:outputtext value=&amp;quot;The name entered is {!userinput}&amp;quot;/&amp;gt;&lt;br /&gt;    &amp;lt;/apex:outputpanel&amp;gt;                   &lt;br /&gt;  &amp;lt;/apex:form&amp;gt;    &lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The Apex code would be...&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;public class simplegetset&lt;br /&gt;{&lt;br /&gt;    public String userinput{get; set;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In this example what happens is.. the variable "userinput" stores the value entered in visualforce page and passes it to the Apex code.. hence you are able to see the entered value in the visualforce page..&lt;br /&gt;&lt;br /&gt;I guess you might understand what i am saying.. to make things simple now use the same visualforce page.. but modify the Apex code as below..&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;public class simplegetset&lt;br /&gt;{  &lt;br /&gt;    public String userinput;&lt;br /&gt;    public String getuserinput(){return 'John';}&lt;br /&gt;   &lt;br /&gt;    public void setuserinput(String userinput)&lt;br /&gt;    {&lt;br /&gt;        this.userinput = userinput;&lt;br /&gt;    }   &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now, whatever value you enter the page always displays "The name entered is John".... This is because your get method always returns 'John'... but still your set method will store the value you entered in the variable "userinput"....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hope i did not confuse...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-7506342385705309790?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/7506342385705309790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/07/getter-and-setter-methods-what-are-they.html#comment-form' title='22 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7506342385705309790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7506342385705309790'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/07/getter-and-setter-methods-what-are-they.html' title='Getter and setter methods - What are they??'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-877016810147728990</id><published>2009-07-08T06:06:00.000-07:00</published><updated>2009-08-06T07:09:31.116-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='visualforce styling'/><title type='text'>Zip file as Static Resource ( CSS Styling )</title><content type='html'>I finally realized what a blunder i have made by hardcoding the URL of images in my CSS file. Everytime i move my code from one instance to another the URL keeps on changing and i have to manually edit each and every URL.....&lt;br /&gt;&lt;br /&gt;But i found out that there was a very very easy way out there... Thanks to the community forums&lt;br /&gt;&lt;br /&gt;This is the way you have to use CSS in your visualforce pages..&lt;br /&gt;&lt;br /&gt;Step 1: Create a zip file of the CSS file with the Associated images..&lt;br /&gt;&lt;br /&gt;Example: If you have a CSS called mystylings.css and all images used in the CSS are inside a folder called "Images", then create a folder containing both "mystylings.css" and "Images" folder...  Suppose you name the folder as "mystylings"...&lt;br /&gt;&lt;br /&gt;Create a zip file of the folder "mystylings"...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;No need to change the image URL as i have mentioned&lt;/span&gt; &lt;a href="http://salesforceexperts.blogspot.com/2009/07/visualforce-page-with-css.html"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Suppose you name the zip file as "stylings.zip".&lt;br /&gt;&lt;br /&gt;Step 2:  Now upload this zip file as it is in Static Resources. Name the resource as "stylings" for example.&lt;br /&gt;&lt;br /&gt;Step 3: Now you can access the "mystylings.css" file in your visualforce page as below.....&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:stylesheet value="{!URLFOR($Resource.stylings,'mystylings/mystylings.css')}"/&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Note that we have specified mystylings/mystylings.css ... This is because we created a folder called "mystylings" and the file "mystylings.css" resides inside this folder....&lt;br /&gt;&lt;br /&gt;That's it and you are done... You can move your Visualforce Page with CSS across environments without changing the CSS&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-877016810147728990?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/877016810147728990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/07/zip-file-as-static-resource.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/877016810147728990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/877016810147728990'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/07/zip-file-as-static-resource.html' title='Zip file as Static Resource ( CSS Styling )'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-2844156995455289782</id><published>2009-07-04T21:08:00.000-07:00</published><updated>2009-07-14T09:16:42.090-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wrapper class'/><category scheme='http://www.blogger.com/atom/ns#' term='mass assign child records'/><category scheme='http://www.blogger.com/atom/ns#' term='select multiple records'/><title type='text'>Customized search and selection (Add multiple child records at one go)</title><content type='html'>Scenario: &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You want your users to be able to make a customized search and not the way salesforce searches. You also would like to allow your users to select multiple records from the search results and process them.&lt;br /&gt;&lt;br /&gt;If the user does not select any record and clicks on the Next button you want to display an Error Message asking him to select at least one record to proceed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Tip:&lt;/span&gt; You may be aware that salesforce allows only one child to be added to a parent at a time. Even though some wizards allow you to mass assign child records to a parent, this is not available for all objects. Modifying this code, you can achieve the functionality of selecting many child records and assigning them to a parent at one click!!!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The screenshots below clearly expresses the scenario...&lt;br /&gt;&lt;br /&gt;Before search..&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YExPk6W3YQg/SlR87uHfaJI/AAAAAAAAABs/bGS_Uw04GPQ/s1600-h/scrnshot1.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 122px;" src="http://4.bp.blogspot.com/_YExPk6W3YQg/SlR87uHfaJI/AAAAAAAAABs/bGS_Uw04GPQ/s320/scrnshot1.JPG" alt="" id="BLOGGER_PHOTO_ID_5356043222283937938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After search...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YExPk6W3YQg/SlR9khrfc3I/AAAAAAAAAB0/UXMZphL-nBc/s1600-h/scrnshot2.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 203px;" src="http://4.bp.blogspot.com/_YExPk6W3YQg/SlR9khrfc3I/AAAAAAAAAB0/UXMZphL-nBc/s320/scrnshot2.JPG" alt="" id="BLOGGER_PHOTO_ID_5356043923319911282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;The following code searches for contacts based on the user inputs. Customize it as needed for your needs. Also, this code is called from a custom button on the Campaign Page Layout.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;Javascript function :&lt;/span&gt;&lt;br /&gt;We also make use of a javascript function to select all records at one go. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;The code has suffecient comments to describe about each and every functionality. Do you think you need more info, then feel free to post your comment.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;How to use this code?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;ul&gt;&lt;li&gt;Save the "Apex Class" first. Save the Visualforce page next.&lt;/li&gt;&lt;li&gt;Create a custom button in Campaign, select the source as "Visualforce Page" and select the visualforce page just now saved.&lt;/li&gt;&lt;li&gt;Go to PageLayout and add your newly created custom button to this layout.&lt;/li&gt;&lt;li&gt;Click on any Campaign Record, go to the detail page and then click on the custom button to view the page created.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Visualforce code:&lt;/div&gt;&lt;div&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-size: 12px; width: 100%; color: rgb(0, 0, 0); line-height: 14px; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; background-color: rgb(238, 238, 238);"&gt;&lt;code&gt;&amp;lt;apex:page standardcontroller="Campaign" extensions="MassEmailFromCampaign" &amp;gt;&lt;br /&gt;&amp;lt;!-- Javascript function to check all rows in the table --&amp;gt;&lt;br /&gt;&amp;lt;script&amp;gt;&lt;br /&gt;function checkAll(cb)&lt;br /&gt;{&lt;br /&gt;   var inputElem = document.getElementsByTagName("input");&lt;br /&gt;   for(var i=0;i&amp;lt;inputElem.length;i++)&lt;br /&gt;     {&lt;br /&gt;             if(inputElem[i].id.indexOf("selectLine1")!=-1)&lt;br /&gt;                   inputElem[i].checked = cb.checked;&lt;br /&gt;      }&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;!-- End of Javascript function --&amp;gt;&lt;br /&gt;&amp;lt;apex:form &amp;gt;&lt;br /&gt;&amp;lt;apex:sectionHeader title="Step 1" subtitle="Select Contacts to send Email"/&amp;gt;&lt;br /&gt;&amp;lt;apex:pageblock &amp;gt;&lt;br /&gt;&amp;lt;apex:pageBlockSection title="Search Contacts" columns="1"&amp;gt;&amp;lt;/apex:pageBlockSection&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Div to give a colored box effect --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div style="border-width:2px;border-style:solid;border-color:orange;"&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;!-- Panel grid to display boxes o accept user input values --&amp;gt;&lt;br /&gt;    &amp;lt;apex:panelGrid columns="2"&amp;gt;&lt;br /&gt;        &amp;lt;apex:outputLabel style="font-weight:bold;" value="Contact E-mail" &amp;gt;&amp;lt;/apex:outputLabel&amp;gt;&lt;br /&gt;        &amp;lt;apex:inputText value="{!userinput}"/&amp;gt;&lt;br /&gt;        &amp;lt;apex:outputLabel style="font-weight:bold;" value="Contact Name" &amp;gt;&amp;lt;/apex:outputLabel&amp;gt;&lt;br /&gt;        &amp;lt;apex:inputText value="{!userinp}"/&amp;gt;&lt;br /&gt;    &amp;lt;/apex:panelGrid&amp;gt;&lt;br /&gt;    &amp;lt;!-- End of panelgrid --&amp;gt;&lt;br /&gt;    &amp;lt;!-- Div to position the commandbutton appropriately --&amp;gt;&lt;br /&gt;        &amp;lt;div style="position:relative;left:75px;"&amp;gt;&lt;br /&gt;             &amp;lt;apex:commandButton value="Search" action="{!contactsearch}" /&amp;gt;&lt;br /&gt;        &amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;!-- End of div --&amp;gt;&lt;br /&gt;        &amp;lt;br/&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- End of colored box div --&amp;gt;&lt;br /&gt;    &amp;lt;br/&amp;gt;&lt;br /&gt;&amp;lt;!-- Display error message --&amp;gt;&lt;br /&gt;&amp;lt;apex:pagemessage strength="2" title="Error!!" severity="error" detail="Please select a contact or enter email address to proceed" rendered="{!errormsg}"/&amp;gt;&lt;br /&gt;&amp;lt;!-- End of error message --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Display search results --&amp;gt;&lt;br /&gt;&amp;lt;apex:pageblocksection columns="1" title="Search results" rendered="{!NOT(ISNULL(results))}" &amp;gt;&lt;br /&gt;  &amp;lt;apex:outputpanel id="Contactlist"&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;apex:pageBlockTable value="{!results}" var="contacts"&amp;gt;&lt;br /&gt;             &amp;lt;apex:column &amp;gt;&lt;br /&gt;                &amp;lt;apex:facet name="header"&amp;gt;&lt;br /&gt;                    &amp;lt;apex:inputCheckbox onclick="checkAll(this)"/&amp;gt;&lt;br /&gt;                &amp;lt;/apex:facet&amp;gt;&lt;br /&gt;                    &amp;lt;apex:inputCheckbox value="{!contacts.selected}" id="selectLine1"/&amp;gt;&lt;br /&gt;            &amp;lt;/apex:column&amp;gt;&lt;br /&gt;            &amp;lt;apex:column headervalue="Contact Name"&amp;gt;&lt;br /&gt;                &amp;lt;apex:outputtext value="{!contacts.con.Name}"/&amp;gt;&lt;br /&gt;            &amp;lt;/apex:column&amp;gt;&lt;br /&gt;            &amp;lt;apex:column headervalue="Account Name"&amp;gt;&lt;br /&gt;                &amp;lt;apex:outputtext value="{!contacts.con.Account.Name}"/&amp;gt;&lt;br /&gt;            &amp;lt;/apex:column&amp;gt;&lt;br /&gt;            &amp;lt;apex:column headervalue="Title"&amp;gt;&lt;br /&gt;                &amp;lt;apex:outputtext value="{!contacts.con.Title}"/&amp;gt;&lt;br /&gt;            &amp;lt;/apex:column&amp;gt;&lt;br /&gt;        &amp;lt;/apex:pageBlockTable&amp;gt;  &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;/apex:outputpanel&amp;gt;&lt;br /&gt;&amp;lt;/apex:pageblocksection&amp;gt;&lt;br /&gt;&amp;lt;!-- End of search results --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Commandbutton to proceed to next screen --&amp;gt;&lt;br /&gt;  &amp;lt;div style="position:relative;left:75px;"&amp;gt;&lt;br /&gt;      &amp;lt;apex:commandButton value="Next" action="{!processSelected}"/&amp;gt;&lt;br /&gt;      &amp;lt;apex:commandbutton value="Cancel" action="{!Cancel}"/&amp;gt;&lt;br /&gt;  &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;!-- End of Commandbutton --&amp;gt;&lt;br /&gt;&amp;lt;/apex:pageblock&amp;gt;&lt;br /&gt;&amp;lt;/apex:form&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;The Apex code for this page will be...&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-size: 12px; width: 100%; color: rgb(0, 0, 0); line-height: 14px; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; background-color: rgb(238, 238, 238);"&gt;&lt;code&gt;public class MassEmailFromCampaign {&lt;br /&gt;&lt;br /&gt;/* Constructor Function. The campaign id is captured in this function */&lt;br /&gt;public MassEmailFromCampaign(ApexPages.StandardController controller)&lt;br /&gt;{&lt;br /&gt; cid=System.currentPageReference().getParameters().get('id');&lt;br /&gt;}&lt;br /&gt;/* Variable declarations */&lt;br /&gt;&lt;br /&gt;Public String cid;                                                            // Stroes Campaign Id&lt;br /&gt;public List&amp;lt;cContact&amp;gt; contactList {get; set;}                                 // Wrapper class which stores contact data and a boolean flag.&lt;br /&gt;public Boolean selectAllCheckbox {get; set;}                                  // Stores checkbox data.&lt;br /&gt;public boolean errormsg=false;                                                // Error msg. When no contact has been selected.&lt;br /&gt;String userinput;                                                             // Contact Email&lt;br /&gt;String userinp;                                                               // Contact Name&lt;br /&gt;&lt;br /&gt;Public boolean displayboxes;&lt;br /&gt;&lt;br /&gt;Public List&amp;lt;Contact&amp;gt; results = new List&amp;lt;Contact&amp;gt;();                                     // Contact search results.&lt;br /&gt;Public List&amp;lt;Contact&amp;gt; selectedContactsstep2 = new List&amp;lt;Contact&amp;gt;();             // Selcted Contacts&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/* End of Variable declarations */&lt;br /&gt;&lt;br /&gt;/* Getter and setter methods for getting the user input ie. Contact name and email from the UI */&lt;br /&gt;&lt;br /&gt;public String getuserinput(){return userinput;}&lt;br /&gt;public void setuserinput(String userinp){this.userinput=userinp;}&lt;br /&gt;public String getuserinp(){return userinp;}&lt;br /&gt;public void setuserinp(String userinp){this.userinp=userinp;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*End of Getter and Setter methods */&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/* Method to Search the contact database to fetch the query results */&lt;br /&gt;public List&amp;lt;Contact&amp;gt; contactsearch()&lt;br /&gt;{&lt;br /&gt;     errormsg=false;&lt;br /&gt;     contactList = new List&amp;lt;cContact&amp;gt;();&lt;br /&gt;     for(Contact c : [select Account.Name,Name,FirstName,LastName,Email,title,Id from Contact where Email like :userinput+'%' and Name like :userinp+'%'])&lt;br /&gt;     {&lt;br /&gt;         contactList.add(new cContact(c));&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt; return null;&lt;br /&gt;}&lt;br /&gt;/* End of method */&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/* Method for returning the contact search results to the UI */&lt;br /&gt;public List&amp;lt;cContact&amp;gt; getresults()&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt; return contactList;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;/* End of Method */&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/* Wrapper class to contain contact record and a boolean flag */&lt;br /&gt;public class cContact&lt;br /&gt;{&lt;br /&gt; public Contact con {get; set;}&lt;br /&gt; public Boolean selected {get; set;}&lt;br /&gt;&lt;br /&gt; /*This is the contructor method. When we create a new cContact object we pass a&lt;br /&gt; Contact that is set to the con property. We also set the selected value to false*/&lt;br /&gt; public cContact(Contact c)&lt;br /&gt; {&lt;br /&gt;     con = c;&lt;br /&gt;     selected = false;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;/* end of Wrapper class */&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/* Method to fetch the selected records and send email to them */&lt;br /&gt;public PageReference processSelected()&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  List&amp;lt;Contact&amp;gt; selectedContacts = new List&amp;lt;Contact&amp;gt;();&lt;br /&gt;  if (contactList!= null)&lt;br /&gt;  {&lt;br /&gt;     for(cContact cCon : getresults()){&lt;br /&gt;        if(cCon.selected == true){&lt;br /&gt;             selectedContacts.add(cCon.con);&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     selectedContactsstep2=selectedContacts;&lt;br /&gt;  }&lt;br /&gt; /* return error message if no contact is selected */&lt;br /&gt; if (selectedcontacts.size()==0)&lt;br /&gt; {&lt;br /&gt;     errormsg=true;&lt;br /&gt;     return null;&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt;     errormsg=false;&lt;br /&gt;     String id=System.currentpagereference().getparameters().get('id');&lt;br /&gt;     Pagereference p=new Pagereference ('/apex/MassEmailFromCampaignStep2');&lt;br /&gt;     return p;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;public List&amp;lt;SelectOption&amp;gt; getItems()&lt;br /&gt;{&lt;br /&gt; List&amp;lt;SelectOption&amp;gt; options = new List&amp;lt;SelectOption&amp;gt;();&lt;br /&gt; options.add(new SelectOption('YES','YES'));&lt;br /&gt; options.add(new SelectOption('NO','NO'));&lt;br /&gt; return options;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/* return error message if no contact is selected */&lt;br /&gt;public boolean geterrormsg()&lt;br /&gt;{&lt;br /&gt; return errormsg;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/* Method to cancel the entire process */&lt;br /&gt;public Pagereference Cancel()&lt;br /&gt;{&lt;br /&gt;        Pagereference p =new Pagereference('/'+cid);&lt;br /&gt;        return p;&lt;br /&gt;}&lt;br /&gt;       &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;Note that, "selectedcontacts" is the variable which holds the contacts you have selected. Use this for further processing. I have just redirected to another visualforce page, you can do your own stuff...&lt;br /&gt;&lt;br /&gt;Post your queries....&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-2844156995455289782?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/2844156995455289782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/07/database-search-and-selection.html#comment-form' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2844156995455289782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2844156995455289782'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/07/database-search-and-selection.html' title='Customized search and selection (Add multiple child records at one go)'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_YExPk6W3YQg/SlR87uHfaJI/AAAAAAAAABs/bGS_Uw04GPQ/s72-c/scrnshot1.JPG' height='72' width='72'/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-7974882662704151626</id><published>2009-07-02T09:13:00.000-07:00</published><updated>2009-07-08T06:34:48.280-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='visualforce'/><title type='text'>Visualforce Page with CSS</title><content type='html'>CSS stands for Cascading Style Sheets. This is nothing but a text file saved with the extension .css&lt;br /&gt;&lt;br /&gt;This file will contain all the style defenitions for your visualforce page. To know the basics of styling your visualforce page visit &lt;a href="http://salesforceexperts.blogspot.com/2009/06/style-your-visualforce-pages-for.html"&gt;this post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Scenario 1: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We are going to take a very simple scenario. You want all your &amp;lt;h1&amp;gt; tags to appear in GREEN color.&lt;br /&gt;&lt;br /&gt;Step 1:&lt;br /&gt;&lt;br /&gt;Create a CSS file.&lt;br /&gt;&lt;br /&gt;Open NOTEPAD or any text editor and type the following code&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;h1&lt;br /&gt;{&lt;br /&gt;color:green;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Save the file  with a .css extension (say CssExample.css)&lt;br /&gt;&lt;br /&gt;Step 2:&lt;br /&gt;&lt;br /&gt;Upload the saved file as a Static resource.&lt;br /&gt;&lt;br /&gt;Setup -&gt; Develop -&gt; Static Resources and click on NEW.&lt;br /&gt;&lt;br /&gt;Give a name for the static resource say CssExample. &lt;span style="color: rgb(255, 0, 0);"&gt;Remeber to set the Cache Control as "Public".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Step 3:&lt;br /&gt;&lt;br /&gt;Create a visualforce page and paste the following code..&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page standardstylesheets="false" showheader="false"&amp;gt;&lt;br /&gt;&amp;lt;apex:stylesheet value="{!$Resource.CssExample}"/&amp;gt;&lt;br /&gt;&amp;lt;h1&amp;gt; This text is displayed using CSS &amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Save the page. Now you can see that the text within &amp;lt;h1&amp;gt; tag is displayed in GREEN color because you have specified so in the CSS file.&lt;br /&gt;&lt;br /&gt;TiP: Remove showheader="false" and you can see that the text is displayed in normal size and not h1. This is because the header uses standard salesforce style sheets and your visualforce page is still overridden with this even if you say ' standardstylesheets="false" '. To overcome this use font-size:15px or whatever it maybe.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Scenario 2:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now lets modify the CSS. We will have two commandbuttons and one commandlink. We will add a background color and text color to one button and a different color to another button. We will also change the color of commandlink.&lt;br /&gt;&lt;br /&gt;Modify the CSS as below...&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;h1&lt;br /&gt;{&lt;br /&gt;color:green;&lt;br /&gt;}&lt;br /&gt;.button1&lt;br /&gt;{&lt;br /&gt;background-color:#00FF00;&lt;br /&gt;font-weight:bold;&lt;br /&gt;color:#E56717;&lt;br /&gt;}&lt;br /&gt;.button2&lt;br /&gt;{&lt;br /&gt;background-color:#C12283;&lt;br /&gt;font-weight:bold;&lt;br /&gt;color:#EE9A4D;&lt;br /&gt;}&lt;br /&gt;a:hover&lt;br /&gt;{&lt;br /&gt;color:#F665AB;&lt;br /&gt;}&lt;br /&gt;a&lt;br /&gt;{&lt;br /&gt;color:#52D017;&lt;br /&gt;font-size:20px;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Upload the modified CSS into Static resource. You can edit the already created static resource CssExample and just choose the latest file from your desktop.&lt;br /&gt;&lt;br /&gt;Modify the Visualforce page as below..&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page standardstylesheets="false" showHeader="false"&amp;gt;&lt;br /&gt;&amp;lt;apex:form &amp;gt;&lt;br /&gt;    &amp;lt;apex:stylesheet value="{!$Resource.CssExample}"/&amp;gt;&lt;br /&gt;    &amp;lt;h1&amp;gt; This text is displayed using CSS &amp;lt;/h1&amp;gt;&lt;br /&gt;        &amp;lt;apex:commandButton styleclass="button1" value="Click Me!"/&amp;gt;&lt;br /&gt;        &amp;lt;apex:commandButton styleclass="button2" value="Click Me!"/&amp;gt;&lt;br /&gt;        &amp;lt;apex:commandlink value="Clik me!"/&amp;gt;&lt;br /&gt;    &amp;lt;/apex:form&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now you can see the different colours that we have applied...&lt;br /&gt;&lt;br /&gt;Look at the CSS code carefully. We have two classes button1 and button2 with their style defenitions (note that .button1 is the way the classes have to be defined in CSS).&lt;br /&gt;&lt;br /&gt;When your Visualforce page is finally rendered as HTML commandlink tag will be converted to &amp;lt;a&amp;gt; tag. That's why we define the colors for "a" in CSS. a:hover represents the styling to be used when you move your mouse on the commandlink..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Scenario 3:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;The method i am describing below is the most inefficient one.&lt;/span&gt; I later discovered that there is a very easy way... &lt;a href="http://salesforceexperts.blogspot.com/2009/07/zip-file-as-static-resource.html"&gt;You can find it here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sorry for the inconvenience.. but still i thought mentioning the below method maybe of use somewhere&lt;br /&gt;&lt;br /&gt;Specifying a background image in the CSS. We will add a background image to the commandbutton and more styling effects.. Save the following images to your desktop.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_YExPk6W3YQg/Sk3edBg9ceI/AAAAAAAAABc/n17Nz2HCwIs/s1600-h/bg_button_span.gif"&gt;&lt;img style="cursor: pointer; width: 300px; height: 48px;" src="http://1.bp.blogspot.com/_YExPk6W3YQg/Sk3edBg9ceI/AAAAAAAAABc/n17Nz2HCwIs/s320/bg_button_span.gif" alt="" id="BLOGGER_PHOTO_ID_5354180122217640418" border="0" /&gt;&lt;/a&gt;   (bg_button_a.gif) Right-click and Save Image As&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_YExPk6W3YQg/Sk3eYc3kaVI/AAAAAAAAABU/i43z0niau7w/s1600-h/bg_button_a.gif"&gt;&lt;img style="cursor: pointer; width: 18px; height: 48px;" src="http://1.bp.blogspot.com/_YExPk6W3YQg/Sk3eYc3kaVI/AAAAAAAAABU/i43z0niau7w/s320/bg_button_a.gif" alt="" id="BLOGGER_PHOTO_ID_5354180043660880210" border="0" /&gt;&lt;/a&gt;  (bg_button_span.gif) Right-click and Save Image As&lt;br /&gt;&lt;br /&gt;Now we have the CSS code as below..&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;.clear { /* generic container (i.e. div) for floating buttons */&lt;br /&gt;  overflow: hidden;&lt;br /&gt;  width: 100%;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;a.button {&lt;br /&gt;  background: transparent &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;url('bg_button_a.gif') &lt;/span&gt;no-repeat scroll top right;&lt;br /&gt;  color: #444;&lt;br /&gt;  display: block;&lt;br /&gt;  float: left;&lt;br /&gt;  font: normal 12px arial, sans-serif;&lt;br /&gt;  height: 24px;&lt;br /&gt;  margin-right: 6px;&lt;br /&gt;  padding-right: 18px; /* sliding doors padding */&lt;br /&gt;  text-decoration: none;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;a.button span {&lt;br /&gt;  background: transparent&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt; url('bg_button_span.gif')&lt;/span&gt; no-repeat;&lt;br /&gt;  display: block;&lt;br /&gt;  line-height: 14px;&lt;br /&gt;  padding: 5px 0 5px 18px;&lt;br /&gt;}&lt;br /&gt;a.button:active {&lt;br /&gt;  background-position: bottom right;&lt;br /&gt;  color: #000;&lt;br /&gt;  outline: none; /* hide dotted outline in Firefox */&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;a.button:active span {&lt;br /&gt;  background-position: bottom left;&lt;br /&gt;  padding: 6px 0 4px 18px; /* push text down 1px */&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The colored parts in the code refer to the URL of the images. When you upload this CSS to Salesforce, the URL is no longer valid. Hence the CSS has to be modified.&lt;br /&gt;&lt;br /&gt;Upload the two images into SFDC as static resources (Save the first one as ButtonBg and the second one as ButtonBgSpan for example). View the details of the static resource created. Click on "Click here to view this file".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YExPk6W3YQg/Sk3h-Wy3KgI/AAAAAAAAABk/nmCYauvwgGQ/s1600-h/Staticresource.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 166px;" src="http://4.bp.blogspot.com/_YExPk6W3YQg/Sk3h-Wy3KgI/AAAAAAAAABk/nmCYauvwgGQ/s320/Staticresource.JPG" alt="" id="BLOGGER_PHOTO_ID_5354183993400437250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After you click the image opens up in a new window/tab. Now check the URL. For me the URL was&lt;br /&gt;&lt;br /&gt;https://ap1.salesforce.com&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;/resource/1246616624000/ButtonBgSpan&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You have to copy the coloured part of the URL and paste it in the CSS . Do it for the two files uploaded. Now the modified CSS looks like this...&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;.clear&lt;br /&gt;{ /* generic container (i.e. div) for floating buttons */&lt;br /&gt;   overflow: hidden;&lt;br /&gt;   width: 100%;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;a.button {&lt;br /&gt;   background: transparent url('&lt;span style="color: rgb(255, 102, 0); font-weight: bold;"&gt;/resource/1246616564000/ButtonBg&lt;/span&gt;') no-repeat scroll top right;&lt;br /&gt;   color: #444;&lt;br /&gt;   display: block;&lt;br /&gt;   float: left;&lt;br /&gt;   font: normal 12px arial, sans-serif;&lt;br /&gt;   height: 24px;&lt;br /&gt;   margin-right: 6px;&lt;br /&gt;   padding-right: 18px; /* sliding doors padding */&lt;br /&gt;   text-decoration: none;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;a.button span&lt;br /&gt;{&lt;br /&gt;   background: transparent url('&lt;span style="color: rgb(255, 102, 0); font-weight: bold;"&gt;/resource/1246616624000/ButtonBgSpan&lt;/span&gt;') no-repeat;&lt;br /&gt;   display: block;&lt;br /&gt;   line-height: 14px;&lt;br /&gt;   padding: 5px 0 5px 18px;&lt;br /&gt;}&lt;br /&gt;a.button:active&lt;br /&gt;{&lt;br /&gt;   background-position: bottom right;&lt;br /&gt;   color: #000;&lt;br /&gt;   outline: none; /* hide dotted outline in Firefox */&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;a.button:active span&lt;br /&gt;{&lt;br /&gt;   background-position: bottom left;&lt;br /&gt;   padding: 6px 0 4px 18px; /* push text down 1px */&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Upload this updated CSS . You can edit your already created Static resource CssExample and just choose the latest file from your desktop.&lt;br /&gt;&lt;br /&gt;The Visualforce page code will be..&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page standardstylesheets="false" showHeader="false"&amp;gt;&lt;br /&gt;   &amp;lt;apex:form &amp;gt;&lt;br /&gt;       &amp;lt;apex:stylesheet value="{!$Resource.CssExample}"/&amp;gt;&lt;br /&gt;           &amp;lt;apex:commandlink styleclass="button"&amp;gt;&amp;lt;span&amp;gt; Save &amp;lt;/span&amp;gt; &amp;lt;/apex:commandlink&amp;gt;&lt;br /&gt;           &amp;lt;apex:commandlink styleclass="button"&amp;gt;&amp;lt;span&amp;gt; Cancel &amp;lt;/span&amp;gt; &amp;lt;/apex:commandlink&amp;gt;&lt;br /&gt;       &amp;lt;/apex:form&amp;gt;  &lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;That's it... Now you can see the effects you have just created&lt;br /&gt;&lt;br /&gt;Comments and suggestions welcome!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-7974882662704151626?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/7974882662704151626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/07/visualforce-page-with-css.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7974882662704151626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/7974882662704151626'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/07/visualforce-page-with-css.html' title='Visualforce Page with CSS'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_YExPk6W3YQg/Sk3edBg9ceI/AAAAAAAAABc/n17Nz2HCwIs/s72-c/bg_button_span.gif' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-4235754807217883937</id><published>2009-07-01T02:41:00.000-07:00</published><updated>2010-07-22T01:24:17.004-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualforce styling'/><title type='text'>Visualforce Page Styling - some useful stylings</title><content type='html'>I found some style specifications which i thought would be worth sharing...&lt;br /&gt;&lt;br /&gt;Here it is..&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #b45f06;"&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;span style="font-weight: bold;"&gt;Positioning&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Get Rid of &amp;amp;nbsp; for adding white spaces to your Visualforce Page. Here is a better way of doing it..&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;div style="position:relative;left:75px;"&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Left specifies how many pixels from the left of the screen should the component be displaced. Right,top,bottom also can be used..&lt;br /&gt;&lt;br /&gt;Put your Visualforce tags inside this div.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #b45f06;"&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;span style="font-weight: bold;"&gt;To draw a coloured box(container) to place components inside it&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;div style="border-width:2px;border-style:solid;border-color:orange;"&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Visualforce tags placed inside this div will appear with a orange coloured box.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #b45f06;"&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Remove Blue Border around images as links in IE: &lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;IE displays a blue border around images to denote that it is a link. To remove it use the following code&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;a img {border-style: none; }&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="color: #b45f06;"&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;color:transparent does not work in IE:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;IE does not recognize this property, whereas Firefox and Safari does. To overcome this, use the following code.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;a span{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; visibility:hidden;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; &lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Check this article for the complete description ... &lt;a href="http://www.codingforums.com/archive/index.php/t-165123.html"&gt;Click here&lt;/a&gt; . Check the bottom most part of the article for a full example.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-4235754807217883937?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/4235754807217883937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/07/visualforce-page-styling-some-useful.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/4235754807217883937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/4235754807217883937'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/07/visualforce-page-styling-some-useful.html' title='Visualforce Page Styling - some useful stylings'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-508603133780775103</id><published>2009-06-29T03:34:00.000-07:00</published><updated>2010-07-22T01:21:10.953-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualforce styling'/><category scheme='http://www.blogger.com/atom/ns#' term='newbie visualforce'/><title type='text'>Style your VisualForce Pages -for newbies</title><content type='html'>VisualForce offers the ability to customize the look and feel of your VisualForce Pages. This guide is intended to cover the methodologies to be followed, and some best practices while implementing your own look and feel.&lt;br /&gt;&lt;br /&gt;Getting Started:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;apex:page&amp;gt;is the topmost tag in any VisualForce Page. This tag determines the styles to be used in your VisualForce pages. Let us start by creating a simple page with some basic styles.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page showheader="false" sidebar="false"&amp;gt;&lt;br /&gt;&amp;lt;apex:form&amp;gt;&lt;br /&gt;&amp;lt;h1&amp;gt; This is my first VisualForce Page! &amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;/apex:form&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Let’s walk through the code line by line&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;apex:page showheader="false" sidebar="false"&amp;gt;&lt;br /&gt;&lt;br /&gt;When you set showheader=”false” the sidebar is also removed by default, however when you set sidebar=”false” header will still display (obviously J )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The point to note here is when the header is removed Salesforce default stylesheets is no longer applied. Hence if you paste ordinary HTML code it will work perfectly.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One step further…..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Let’s modify the code and add a button..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page showheader="false" sidebar="false"&amp;gt;&lt;br /&gt;&amp;lt;apex:form&amp;gt;&lt;br /&gt;&amp;lt;h1&amp;gt; This is my first VisualForce Page! &amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;apex:commandButton value="Done"&amp;gt;&amp;lt;/apex:commandButton&amp;gt;&lt;br /&gt;&amp;lt;/apex:form&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;What did you notice? You’re right, the size of the text has reduced when you have not done anything to it. Why is this so?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It is because we have used &amp;lt;apex:commandbutton&amp;gt; tag. This causes salesforce Standard stylesheets to be used. Not only this tag, but there are many others which cause a conflict. Hey!!, don’t worry there’s a way out there.&lt;br /&gt;&lt;br /&gt;&amp;lt;apex:page showheader="false" sidebar="false" standardstylesheets=”false”&amp;gt;&lt;br /&gt;&lt;br /&gt;This will remove the salesforce standard stylesheets and you can now use your own styles without any worries. But, of course there are many more problems to be faced…&lt;br /&gt;&lt;br /&gt;Now lets add some color and effects…&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page showheader="false" sidebar="false"&amp;gt;&lt;br /&gt;&amp;lt;apex:form&amp;gt;&lt;br /&gt;&amp;lt;h1 style="text-align:center;color:blue;"&amp;gt;&lt;br /&gt;This is my first VisualForce Page! &amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;/apex:form&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_YExPk6W3YQg/TEf-73Y9ufI/AAAAAAAAARc/E2JbuytOx5g/s1600/example1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_YExPk6W3YQg/TEf-73Y9ufI/AAAAAAAAARc/E2JbuytOx5g/s320/example1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;This is called INLINE STYLING, it is called so because we have used style=” “ attribute inside the &amp;lt;h1&amp;gt; tag.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When not to use INLINE STYLING????&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Suppose if you have ten &amp;lt;h1&amp;gt; tags in your page and you want all the text displayed in BLUE. Ideally you would have to add INLINE styles in all your ten &amp;lt;h1&amp;gt; tags.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To overcome this, we use &amp;lt;style&amp;gt; tag. We will modify our previous example using &amp;lt;style&amp;gt; tag.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page showheader="false" sidebar="false"&amp;gt;&lt;br /&gt;&amp;lt;style&amp;gt;&lt;br /&gt;h1&lt;br /&gt;{&lt;br /&gt;text-align:center;&lt;br /&gt;color:blue;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&amp;lt;apex:form&amp;gt;&lt;br /&gt;&amp;lt;marquee&amp;gt; &amp;lt;h1&amp;gt;&lt;br /&gt;This is my first VisualForce Page! &amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;/marquee&amp;gt;&lt;br /&gt;&amp;lt;h1&amp;gt; This text is displayed without INLINE styles &amp;lt;/h1&amp;gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;lt;/apex:form&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_YExPk6W3YQg/TEf_HTP6w4I/AAAAAAAAARk/mwmvaylftwE/s1600/example2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_YExPk6W3YQg/TEf_HTP6w4I/AAAAAAAAARk/mwmvaylftwE/s320/example2.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;USING STYLECLASS&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;How about a more complicated page with styleclass, adding many styles into a single holder is called a styleclass. You can then use the styleclass anywhere in your page&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page showheader="false" sidebar="false"&amp;gt;&lt;br /&gt;&amp;lt;apex:page showheader="false" sidebar="false" standardcontroller="Account" standardstylesheets="false"&amp;gt;&lt;br /&gt;&amp;lt;style&amp;gt;&lt;br /&gt;.red&lt;br /&gt;{&lt;br /&gt;background-color:red;&lt;br /&gt;}&lt;br /&gt;.green&lt;br /&gt;{&lt;br /&gt;background-color:green;&lt;br /&gt;}&lt;br /&gt;.blue&lt;br /&gt;{&lt;br /&gt;background-color:blue;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&amp;gt; &lt;br /&gt;&amp;lt;apex:form &amp;gt;&lt;br /&gt;&amp;lt;h1 style="text-align:center;color:blue;"&amp;gt;&amp;nbsp; This is my first VisualForce Page! &amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;apex:datatable value="{!Account.Contacts}" var="con" border="1" cellspacing="5" cellpadding="5" columnClasses="red,green,blue"&amp;gt;&lt;br /&gt;&amp;lt;apex:column headervalue="Contact FirstName"&amp;gt; &amp;lt;apex:outputfield value="{!con.FirstName}"/&amp;gt; &amp;lt;/apex:column&amp;gt;&lt;br /&gt;&amp;lt;apex:column headervalue="Contact LastName"&amp;gt; &amp;lt;apex:outputfield value="{!con.LastName}"/&amp;gt; &amp;lt;/apex:column&amp;gt;&lt;br /&gt;&amp;lt;apex:column headervalue="Contact Name"&amp;gt; &amp;lt;apex:outputfield value="{!con.Title}"/&amp;gt; &amp;lt;/apex:column&amp;gt;&lt;br /&gt;&amp;lt;/apex:datatable&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;lt;/apex:form&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_YExPk6W3YQg/TEf_SWp_n5I/AAAAAAAAARs/wvI5llUiPek/s1600/example3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_YExPk6W3YQg/TEf_SWp_n5I/AAAAAAAAARs/wvI5llUiPek/s320/example3.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Here when you say columnclasses="red,green,blue" in &amp;lt;apex:datatable&amp;gt; itag it means that the styleclass "red" would be applied for the first column, "green" would be applied for the second column and "blue" would be applied for the third column. When you have a fourth column "red" styleclass would be applied again, because it works in a repetitive fashion. You can use as many classses as you need for any number of columns.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That’s it for you to get started..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The next step is using CSS in your visualforce pages. Here it is!! &lt;a href="http://www.forcetree.com/2009/07/visualforce-page-with-css.html"&gt;Click here!!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-508603133780775103?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/508603133780775103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/06/style-your-visualforce-pages-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/508603133780775103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/508603133780775103'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/06/style-your-visualforce-pages-for.html' title='Style your VisualForce Pages -for newbies'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_YExPk6W3YQg/TEf-73Y9ufI/AAAAAAAAARc/E2JbuytOx5g/s72-c/example1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-2663720071696596045</id><published>2009-06-24T09:31:00.001-07:00</published><updated>2010-07-22T00:58:36.967-07:00</updated><title type='text'>Passing parameters to a visualforce page and between pages</title><content type='html'>&lt;div style="text-align: left;"&gt;Many a times you would want to pass parameters to a visualforce page..  &lt;br /&gt;&lt;br /&gt;Well, there are two situations in which you would want this.. One is when you want to pass parameters on the click of a custom button.. Other is when you want to pass parameters from one visualforce page to another....&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: orange;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Situation 1&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;You will see that when you create a custom button and select the source as visualforce page you would see only the page selection and no other option... Well there is a work around for this..&lt;br /&gt;&lt;br /&gt;Select the content source as URL and not visualforce... Then you can type the URL as \apex\yourpage.. And what more you can now pass as many parameters as you need using merge fields...  There is one more advantage in this method.. You are not forced to use a standard controller with an extension just for your page to appear in the list when you actually do not need a standard controller..      &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5352227559988075730" src="http://1.bp.blogspot.com/_YExPk6W3YQg/Skbum8YlHNI/AAAAAAAAAAk/o4FaDzPBU08/s320/urlimage.JPG" style="cursor: pointer; height: 173px; width: 320px;" /&gt;&lt;br /&gt;&lt;div style="color: orange;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Situation 2 &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;When you want to pass parameters between visualforce pages use the &amp;lt;apex:param&amp;gt; tag....&lt;br /&gt;&lt;br /&gt;Here is a small sample program&lt;br /&gt;&lt;br /&gt;Step 1: First we create a Visualforce page called SamplePage1....&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page &amp;gt;&lt;br /&gt;&amp;lt;apex:outputlink value="/apex/SamplePage2"&amp;gt; Click Here &amp;lt;apex:param name="msg" value="success"/&amp;gt; &amp;lt;/apex:outputlink&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span"&gt;Step 2:  Save this page and now click on " Click Here" link. You will see that when you click on the link you will navigate to a new page called SamplePage2. Check the URL now..&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"&gt;https://na5.salesforce.com/apex/SamplePage2?msg=success&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"&gt;You can see that the parameter " msg" with value "success" has been passed to the new page.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"&gt;Now, how will you retrieve this value in your APEX CLASS for processing.... see below....&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"&gt;Step3:  We will put the following code in our SamplePage2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page controller="Sampleclass"&amp;gt; &amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span"&gt;The Apex Class code would be &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="line-height: 15px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;span style="font-size: small;"&gt;&lt;code&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="line-height: 15px; white-space: pre;"&gt;&lt;span class="Apple-style-span"&gt;public class Sampleclass&lt;br /&gt;{&lt;br /&gt;Public String message = System.currentPagereference().getParameters().get('msg');&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="line-height: 15px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span"&gt;So now, the variable "message" would store the value of your parameter "msg"....&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: orange;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;How to Cover this code in TEST Method?????&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: black; font-weight: normal; line-height: 15px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;span style="font-size: small;"&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: black; font-weight: normal; line-height: 15px; white-space: pre;"&gt;&lt;span class="Apple-style-span"&gt;public class Sampleclass&lt;br /&gt;{&lt;br /&gt;Public String message = System.currentPagereference().getParameters().get('msg');&lt;br /&gt;public static testmethod void SampleclassTest()&lt;br /&gt;{&lt;br /&gt;System.currentPagereference().getParameters().put('msg','success');&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: black; font-weight: normal; line-height: 15px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-monospace;"&gt;&lt;span class="Apple-style-span" style="line-height: 15px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small; line-height: 15px; white-space: pre;"&gt;&lt;span class="Apple-style-span"&gt;And at last some suggestions...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small; line-height: 15px; white-space: pre;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small; line-height: 15px; white-space: pre;"&gt;&lt;span class="Apple-style-span"&gt;Be careful with the values you pass in the URL.. Special Characters will cause problems&lt;br /&gt;when passed in the URL.. For ex if you pass the Account Name "Shah &amp;amp; shah".. this would'nt&lt;br /&gt;pass properly as the special character "&amp;amp;" cant get into the URL.. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small; line-height: 15px; white-space: pre;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small; line-height: 15px; white-space: pre;"&gt;&lt;span class="Apple-style-span"&gt;So as a best practice always pass ID's.. you can write a query and retrieve any other field&lt;br /&gt;in the APEX Class&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: 100%;"&gt;&lt;span class="Apple-style-span" style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-2663720071696596045?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/2663720071696596045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.forcetree.com/2009/06/passing-parameters-to-visualforce-page.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2663720071696596045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5388715879708847968/posts/default/2663720071696596045'/><link rel='alternate' type='text/html' href='http://www.forcetree.com/2009/06/passing-parameters-to-visualforce-page.html' title='Passing parameters to a visualforce page and between pages'/><author><name>Edwin Vijay R</name><uri>http://www.blogger.com/profile/09379974324475713267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_YExPk6W3YQg/Skbum8YlHNI/AAAAAAAAAAk/o4FaDzPBU08/s72-c/urlimage.JPG' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5388715879708847968.post-6890520553179021894</id><published>2009-06-24T03:58:00.000-07:00</published><updated>2009-07-10T00:57:13.305-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamic picklist'/><category scheme='http://www.blogger.com/atom/ns#' term='visualforce'/><title type='text'>Dynamically add values to picklist using Visualforce</title><content type='html'>Many a times we come across situations in which we want data to be added to a picklist dynamically.&lt;br /&gt;&lt;br /&gt;By saying dynamic i mean that you do not want an Administrator to go to the field level setup and add values to the picklist...&lt;br /&gt;&lt;br /&gt;Here is a detailed description of a scenario from one of my friends...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;Scenario..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Problem explanation with Example: A picklist field "City" with values:Delhi,Mumbai,Chennai,Kolkata(4 picklist values) and a textbox nearby to enter any other city. Supposing if Bangalore has to be entered, the user has to use the textbox. Now next time when a record is created, the "City" field should show "Bangalore" as 5th value.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;Screenshots:&lt;/span&gt;&lt;br /&gt;As you can see below, there are only three values available for selection.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_YExPk6W3YQg/SlbxYaP0XUI/AAAAAAAAAB8/mxYeVD04I5w/s1600-h/dynamicpicklist1.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 150px;" src="http://2.bp.blogspot.com/_YExPk6W3YQg/SlbxYaP0XUI/AAAAAAAAAB8/mxYeVD04I5w/s320/dynamicpicklist1.JPG" alt="" id="BLOGGER_PHOTO_ID_5356734208468606274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I am selecting 'Other' from the dropdown, this action displays a text box for the new value and a button called "Add".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YExPk6W3YQg/SlbxnsLZ3HI/AAAAAAAAACE/cDpL3zzk2hk/s1600-h/dynamicpicklist2.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 134px;" src="http://4.bp.blogspot.com/_YExPk6W3YQg/SlbxnsLZ3HI/AAAAAAAAACE/cDpL3zzk2hk/s320/dynamicpicklist2.JPG" alt="" id="BLOGGER_PHOTO_ID_5356734470979968114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I am entering a new value called "Bangalore" and i am clicking on "Add"&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_YExPk6W3YQg/Slbx6pVoO2I/AAAAAAAAACM/UbwhKd5IBcc/s1600-h/dynamicpicklist3.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 148px;" src="http://3.bp.blogspot.com/_YExPk6W3YQg/Slbx6pVoO2I/AAAAAAAAACM/UbwhKd5IBcc/s320/dynamicpicklist3.JPG" alt="" id="BLOGGER_PHOTO_ID_5356734796635061090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Done!! Now you can see that the new value "Bangalore" is also added to the dropdown..&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_YExPk6W3YQg/SlbyLwtxHdI/AAAAAAAAACU/2GEShmCIiIc/s1600-h/dynamicpicklist4.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 173px;" src="http://1.bp.blogspot.com/_YExPk6W3YQg/SlbyLwtxHdI/AAAAAAAAACU/2GEShmCIiIc/s320/dynamicpicklist4.JPG" alt="" id="BLOGGER_PHOTO_ID_5356735090673130962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We will achieve this functionality using visualforce. You can then extend the code provided here to as many Visualforce pages as you want.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;Step 1:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;First of all, we will have to create an object to hold all the picklist values. So, go ahead and create the following..&lt;br /&gt;&lt;br /&gt;Object name : DynamicPicklist&lt;ape&gt;&lt;/ape&gt;&lt;br /&gt;Field Names:&lt;br /&gt;Name (Datatype : Autonumber)&lt;br /&gt;PicklistValue (Datatype: text)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0); font-weight: bold;"&gt;Step 2:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Add picklist values to the object created..  (ie) Add records to the newly created object...&lt;br /&gt;&lt;br /&gt;For example..&lt;br /&gt;&lt;br /&gt;Record 1: PicklistValue= 'Delhi'&lt;br /&gt;Record 2: PicklistValue = 'Mumbai'&lt;br /&gt;&lt;br /&gt;and so on...........&lt;br /&gt;&lt;br /&gt;Now also add a value called '--Other--'. This value will be used for the user to enter a new value.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;Step 3:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Creation of the Visualforce page and the Apex Class.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;Apex Code&lt;/span&gt;.. Save this first&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;public class dynamicpicklist&lt;br /&gt;{&lt;br /&gt;public String city{get; set;}&lt;br /&gt;&lt;br /&gt;public List&amp;lt;SelectOption&amp;gt; getcitynames()&lt;br /&gt;{&lt;br /&gt;  List&amp;lt;SelectOption&amp;gt; options = new List&amp;lt;SelectOption&amp;gt;();&lt;br /&gt;  List&amp;lt;DynamicPicklist__c&amp;gt; citylist = new List&amp;lt;DynamicPicklist__c&amp;gt;();&lt;br /&gt;  citylist = [Select Id, PicklistValue__c FROM DynamicPicklist__c ];&lt;br /&gt;  options.add(new SelectOption('--None--','--None--'));&lt;br /&gt;  for (Integer j=0;j&amp;lt;citylist.size();j++)&lt;br /&gt;  {&lt;br /&gt;      options.add(new SelectOption(citylist[j].PicklistValue__c,citylist[j].PicklistValue__c));&lt;br /&gt;  }&lt;br /&gt;  return options;&lt;br /&gt;}&lt;br /&gt;public String newpicklistvalue{get; set;}&lt;br /&gt;&lt;br /&gt;public void saverec()&lt;br /&gt;{&lt;br /&gt;  DynamicPicklist__c newrec = new DynamicPicklist__c(PicklistValue__c=newpicklistvalue);&lt;br /&gt;  insert newrec;&lt;br /&gt;  newpicklistvalue=NULL;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;Visualforce code...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;apex:page controller="dynamicpicklist" sidebar="false" &amp;gt;&lt;br /&gt;&amp;lt;apex:form &amp;gt;&lt;br /&gt;&amp;lt;apex:sectionHeader title="Dynamic Picklist" subtitle="Reusable code"/&amp;gt;&lt;br /&gt;&amp;lt;apex:pageblock &amp;gt;&lt;br /&gt;&amp;lt;apex:pageBlockSection title="Dynamic picklist" columns="1"&amp;gt;&lt;br /&gt;      &amp;lt;apex:pageblocksectionItem &amp;gt;&lt;br /&gt;          &amp;lt;apex:outputlabel value="City" for="values" /&amp;gt;&lt;br /&gt;          &amp;lt;apex:selectList value="{!city}" size="1" id="values"&amp;gt;&lt;br /&gt;              &amp;lt;apex:actionSupport event="onchange" reRender="newvalue" /&amp;gt;&lt;br /&gt;              &amp;lt;apex:selectOptions value="{!citynames}"/&amp;gt;&lt;br /&gt;          &amp;lt;/apex:selectList&amp;gt;&lt;br /&gt;      &amp;lt;/apex:pageblocksectionItem&amp;gt;                                        &lt;br /&gt;          &amp;lt;apex:outputpanel id="newvalue"&amp;gt;&lt;br /&gt;             &amp;lt;apex:outputpanel rendered="{!city == '--Other--'}"&amp;gt;&lt;br /&gt;             &amp;lt;div style="position:relative;left:75px;"&amp;gt;             &lt;br /&gt;                  &amp;lt;apex:outputlabel value="New value" for="newval" /&amp;gt;&lt;br /&gt;                  &amp;lt;apex:inputText value="{!newpicklistvalue}" id="newval"/&amp;gt;&lt;br /&gt;                  &amp;lt;apex:commandbutton action="{!saverec}" value="Add!"/&amp;gt;&lt;br /&gt;             &amp;lt;/div&amp;gt;&lt;br /&gt;             &amp;lt;/apex:outputpanel&amp;gt;&lt;br /&gt;          &amp;lt;/apex:outputpanel&amp;gt;             &lt;br /&gt;  &amp;lt;/apex:pageblocksection&amp;gt;&lt;br /&gt;&amp;lt;/apex:pageblock&amp;gt;&lt;br /&gt;&amp;lt;/apex:form&amp;gt;&lt;br /&gt;&amp;lt;/apex:page&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;How to extend this code???&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Are you wondering if you will have to create one object for one picklist and suppose you have ten picklists like these, then ten objects...  That is really a mess...&lt;br /&gt;&lt;br /&gt;So, why not create ten fields in the same object..  Field1 represents picklist1, field2 picklist2 and so on...&lt;br /&gt;&lt;br /&gt;But, be clear on the way you retrieve values and insert values into this object... For ex: I have not performed the validation to check if the newly entered value already exists..&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Comments and Queries most welcome!!!!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5388715879708847968-6890520553179021894?l=www.forcetree.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.forcetree.com/feeds/6890520553179021894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' h
