根據主題內容,可以會有一個方法獲取到contact的一些字段信息顯示在頁面上,也會有一個類似save的方法,來保存數據,並跳轉回去,也會有一個cancel方法來取消操作,因此:
Controller:MyGetContactDetail
public class MyGetContactDetail {
//用來獲取URL上的contactId
private String contactId = null;
//用來獲取accountId,方便回到之前對應的contact頁面
private String accountId = null;
//用來保存查詢出來的當前contact的一些會被修改的基本信息
private Contact contactDetail=null;
//構造函數,在類進行初始化時就會允許其中的獲取URL參數的代碼,因此後面的方法中的變量值便會得到初始化
public MyGetContactDetail (){
contactId = ApexPages.currentPage().getParameters().get('Id');
accountId = ApexPages.currentPage().getParameters().get('AccountId');
//SOQL語句進行查詢
contactDetail = [SELECT Name,Email,Description,AccountId,Id FROM Contact WHERE Id=:contactId ];
}
public Contact getContactDetail(){
//構造函數中以及獲取了,直接返回
return contactDetail;
}
//PageReference這個修飾符就是用來返回頁面page的
public PageReference save(){
update contactDetail;
//因爲頁面上的字段都是和這個類中查出來的contact綁定的,所以我們不需要再進行獲取修改的值了,而是直接進行修改
//然後回到原來的頁面
String url = '/apex/ContactList?&accountId='+contactDetail.accountId;
PageReference pageRef = new PageReference(url);
return pageRef;
}
//save與cancel唯一的區別就是一個對數據進行更新,一個不更新
public PageReference cancel(){
String url = '/apex/ContactList?&accountId='+contactDetail.accountId;
PageReference pageRef = new PageReference(url);
return pageRef;
}
}
VF Page:EditContact
<apex:page controller="MyGetContactDetail">
<apex:form >
<apex:pageBlock title="Edit Contact" id="contacts_Edit">
<apex:pageBlockSection columns="1">
<!--這裏直接調用getContactDetail方法返回的參數再加上你要顯示的字段-->
<apex:inputField value="{! contactDetail.Name }"/>
<apex:inputField value="{! contactDetail.Email }"/>
<apex:inputField value="{! contactDetail.Description }"/>
</apex:pageBlockSection>
<!--value="./EditContact?core.apexpages.request.devconsole=1"-->
<apex:pageBlockButtons >
<!--定義兩個按鈕並綁定兩個方法-->
<apex:commandButton action="{! save }" value="Save" />
<apex:commandButton action="{! cancel}" value="Cancel" />
</apex:pageBlockButtons>
</apex:pageBlock>
</apex:form>
</apex:page>
該練習爲本人實習課題,經過實測後才寫入blog,文章若有指代不明或者有什麼沒有闡述清楚的地方,歡迎留言討論,共同學習,謝謝!!