概述
1. 可使用Developer Console来快速查看System.assertEquals的执行结果,也可以通过此方法快速查看某些变量的值;
2.
关于set集合的使用,适合于存取Id值;如果要一次性List(只能根据index来remove值)中的指定项,可使用包装类使目标对象可“标记”,对删除项进行标记,然后获取删除项并将其删除。如果map的value是引用类型,可以直接拿出来修改,修改后不用在赋值回去,如果是Integer类型的value,就需要重新赋值回去。
3.
Salesforce:将For循环内部的查询以及关于增删改查的操作拿出来,避免内部的循环内部的查询语句。操作时注意set集合的使用(常用来存储Id值,用于后续比较),set不能存储重复值。
如果类实现了schedulable接口,在写测试的时候应该使用Test.startTest()和Test.stopTest()方法来确保代码的完全执行,以保证判断结果的正确性。4.
添加自定义异常:
ApexPages.Message myMsg =newApexPages.Message(ApexPages.Severity.FATAL,'My Error Message'); ApexPages.addMessage(myMsg);ApexPages.Severity是一个枚举类型,他指定了(the severity of a Visualforce message).共有五个枚举值 : CONFIRM ERROR FATAL INFO WARNING.
5.
批量插入:insert new Account [ ] { a, b, c , ⋯⋯ } ;
将字符串转化为日期格式: date startDate = date.newInstance(Integer.valueOf(selectSeasonValue), 1, 1);
6.
使用<apex:variable>来对repeater等进行Record计数,使用如下方法:<apex:variable value="{!0}" var="index"/>,然后还需要在repeater内部定义一次:
<apex:variable var="index" value="{!index+1}"/>
7.
对workflow和trigger的执行次序进行的测试:测试过程:在Account上创建一个before update的trigger,触发结果是令
Account.Description='aaTest'同时
Schema.Describefieldresult fieldResult = ProductLocation__c.Warehouse__c.getDescribe();
List<SelectOption> options = new List<SelectOption>();
List<Schema.PickListEntry> pickListEntries = fieldResult.getPickListValues();
for(Schema.PickListEntry entry : pickListEntries)
{ options.add(new SelectOption(entry.getValue(), entry.getValue()));}
9.
salesforce标准Popup框样式:
<div class="overlayDialog inlineEditDialog" style="width: 600px; display:block; left:300px; top:110px; visibility:hidden;">
<div class="topRight">
<div class="topLeft">
<img id="InlineEditDialogX2" οnmοuseοver="this.className='dialogCloseOn'" οnmοuseοut="this.className='dialogClose'" οnclick="closePop2()" class="dialogClose" src="/s.gif" />
<h2 id="InlineEditDialogTitle2">Pipeline Changes</h2>
</div>
</div>
<apex:outputPanel id="abcd"></apex:outputPanel>
<div class="middle">
<div class="innerContent" id="InlineEditDialogContent2">
<div class="activeField">
<div class="inlineEditCompoundDiv" style="text-align:left">
<iframe src="/apex/ForecastingPipelineChanges?uid={!currentViewingUser}&quarter={!CurrentFiscalQuarter}" width="560" height="150" style="border:none"></iframe>
</div>
</div>
</div>
</div>
<div class="bottomRight">
<div class="bottomLeft"></div>
</div>
</div>
<div class="overlayBackground" style="width: 3289px; height: 1200px; display: none; position: fixed"></div>
10.
* <apex:actionStatus>可能在有些apex页面中失效,所以就需要手动去控制status。
*
使用该方法为函数传递参数 country和 prodIndex,调用时直接在JS里面用:selectCountry( ' countryParam ', ' prodIndexParam '); 这两个参数会以url的形式post到Controller,通过ApexPages.currentPage().getParameters().get('country');的形式获取参数值。注意:这种传参只能在无刷新的情况下进行,否则参数是无法传递的。
<apex:actionFunction name="selectCountry" action="{!selectCountry}" reRender="physicalInfoPanel">
<apex:param name="country" value=""/>
<apex:param name="prodIndex" value=""/>
</apex:actionFunction>
11.
关于<apex:actionFunction>控件的位置放置问题:
当<apex:actionFunction>生成的函数要和页面自定义的JS函数混合使用时,采用如下方法:
例子:<apex:commandButton id="chatSubmit" value="Submit" οnclick="checkChatValue();return false;"/>
在自定义的checkChatValue()函数中调用Apex:actionFunction生成的函数。
如果要在标准的PageBlock中使用,这时需要将<apex:actionFunction>放到<apex:pageBlock>标签中,标签<apex:actionStatus>才会正常显示。(不一定是这样,但可以解决问题。)
12.
写测试代码的时候,一般情况我们都需要在测试方法中创建出需要的
@isTest (seeAllData=true)
加上这个能让我们使用系统中所有的数据用于测试
13.
RemoteAction的使用:
global with sharing class EditRMALineAddressController
{
@RemoteAction
global static List<CountryStateTable__c> getStateList(String country)
{
return [select StateCode__c, StateName__c from CountryStateTable__c where Country__c=:country order by StateName__c];
}
}
在VF页面上调用:
EditRMALineAddressController。getStateList( country, function(result, event){
for(var i = 0; i < result.length; i++)
{
var stateCode = result[i].StateCode__c;
var stateName = result[i].StateName__c;
}
)
即result返回的是对象数组。
14. 测试时创建对象:
Account testAccount = new Account(Name='acme');
insert testAccount;
Contact testContact = new Contact(LastName = 'acme', AccountId = testAccount.Id);
insert testContact;
Product2 product1 = new Product2(IsActive=true, Name='acme', Forecast_Category__c='Virtual', Family = 'Virtual Image', Model__c = 'NX-2500');
Asset asset1 = new Asset(Name='acme', Ship_Date__c = Date.newInstance(2000,01,01), SerialNumber='acme', Quantity=1.00, Status='Conditional PO', Product2Id=product1.Id, AccountId=testAccount.Id, ContactId=testContact.Id);
Contract contract = new Contract(AccountId = testAccount.Id, SP_Contract_Number__c = 'acme', Status = 'Draft');
insert contract;
contract.Status = 'Activated';
update contract;
15. 遮罩
<style>
.displayBG
{
border: none;
width: 100%;
height: 100%;
display: block;
position: fixed;
text-align: center;
}
.loadingImg
{
height: 20px;
width: 20px;
margin-top: 200px;
}
</style>
[9/26/13 5:14:39 PM] Samba.gao: <apex:actionStatus id="loading" layout="block">
<apex:facet name="start">
<div class="overlayBackground displayBG">
<img src="/img/loading.gif" id="loading" class="loadingImg"/>
</div>
</apex:facet>
</apex:actionStatus>
<apex:actionFunction name="populateContract" action="{!populateContract}" reRender="theSection" status="IOStatus"/>
最后
以上就是包容花瓣为你收集整理的Salesforce 常用代码的全部内容,希望文章能够帮你解决Salesforce 常用代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复