久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Salesforce怎么自定義控制器

176次閱讀
沒有評論

共計 3538 個字符,預(yù)計需要花費 9 分鐘才能閱讀完成。

今天丸趣 TV 小編給大家分享一下 Salesforce 怎么自定義控制器的相關(guān)知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

一. 自定義控制器

  通過在 apex:page 控制器屬性中引用控制器類的名稱,將自定義控制器添加到 Visualforce 頁面。當(dāng)我們的頁面使用自定義控制器時,不能使用標(biāo)準(zhǔn)控制器。頁面使用不同的屬性來設(shè)置自定義控制器。
1. 可以通過 Developer Console 創(chuàng)建一個簡單的 VF 頁面 , 點擊 File– New — Visualforce Page  創(chuàng)建一個 Visualforce 頁面 .

    頁面名稱我們就叫做 OPDSortManage 

apex:page controller= OPDSortManageController 
  apex:form 
  apex:pageBlock title= Contacts List  id= contacts_list 
 
  !--  偷工減材中... -- 
  /apex:pageBlock 
  /apex:form 
 /apex:page

當(dāng)我們的頁面編輯好的時候點擊保存時, 會說我們的 Controller 未定義, 所以小喵建議大家可以先創(chuàng)建 Controller 其次再創(chuàng)建頁面

2. 可以通過 Developer Console 創(chuàng)建一個簡單的自定義控制器, 點擊 File– New– Apex Class  創(chuàng)建一個 Apex 類

  類名的話就需要跟我們的頁面上引用的 Controller 的類名一致了哦!

Getter 方法將數(shù)據(jù)從您的控制器中拖出到您的頁面上。有相應(yīng)的 setter 方法可以讓你從頁面提交值到你的控制器。

public with sharing class OPDSortManageController { public Integr Num {get;set;} // 模擬變量  get  取值  set  設(shè)值
 
 // 構(gòu)造
 public OPDSortManageController(){
 num = 0 ;
 }
}

  當(dāng)我們每次更改代碼之后記得保存哦!

3. 切換回我們的 OPDSortManage 頁面并再次保存。這次會提示我們保存成功, 如果出現(xiàn)其他錯誤的話, 就需要小伙伴們認(rèn)真審查代碼了.

4. 點擊預(yù)覽打開您的頁面的預(yù)覽,就可以在進行更改時查看。應(yīng)該打開一個新窗口,顯示標(biāo)準(zhǔn)的 Salesforce 頁面標(biāo)題和側(cè)邊欄元素,但沒有內(nèi)容。

二. 標(biāo)準(zhǔn)控制器

 “Visualforce 使用傳統(tǒng)的模型 - 視圖 - 控制器(MVC)范例,并包括復(fù)雜的內(nèi)置控制器來處理標(biāo)準(zhǔn)動作和數(shù)據(jù)訪問,并提供與 Force.com 數(shù)據(jù)庫的簡單而緊密的集成。這些內(nèi)置控制器通常稱為標(biāo)準(zhǔn)控制器,甚至稱為標(biāo)準(zhǔn)控制器。

        這意味著為了使 Salesforce 中的數(shù)據(jù)顯示在 Visualforce 頁面上,需要一個控制器。控制器是在 Visualforce 頁面中引用的 Apex 類。正是這個控制器使 Visualforce 頁面能夠在頁面上顯示 Salesforce 數(shù)據(jù)。控制器從 Salesforce“獲取”數(shù)據(jù)并將其“設(shè)置”在 Visualforce 頁面上。

          自定義控制器和標(biāo)準(zhǔn)控制器之間的區(qū)別在于,標(biāo)準(zhǔn)控制器已經(jīng)提供了創(chuàng)建,讀取,更新,刪除(CRUD)操作。并且由于絕大多數(shù)標(biāo)準(zhǔn)和自定義對象已經(jīng)具有可用于與該對象關(guān)聯(lián)的數(shù)據(jù)進行交互的標(biāo)準(zhǔn)控制器,因此我們無需自己編寫用于控制器的代碼。

apex:page standardController= Account  recordSetVar= accounts  tab sidebar= false 
 apex:pageBlock  
 apex:pageBlockTable value= {!accounts}  var= a 
 apex:column value= {!a.name} / 
 /apex:pageBlockTable 
 /apex:pageBlock 
 /apex:page

          我們只需使用“standardController =”Account”行即可使用 Account 標(biāo)準(zhǔn)對象引用 Visualforce 頁面。此處無需 Apex 代碼。這非常有幫助,因為這意味著我們可以在測試或生產(chǎn)環(huán)境中利用 DataTables.js 和 Visualforce,而無需編寫任何 Apex 代碼。

三. 擴展性控制器      

    如果你是一個懵懂的少年, 你可能和小喵一樣寫過這樣的代碼 ↓

錯誤代碼案例 :

apex:page standardController= Account  Controller= AccountController  recordSetVar= accounts  sidebar= false 
 apex:pageBlock  
 apex:pageBlockTable value= {!Account}  var= a 
 apex:column value= {!a.name} / 
 /apex:pageBlockTable 
 /apex:pageBlock 
 /apex:page

那么, 這樣的代碼在保存時將會給你報錯, 大致的意思就是 一個頁面不能既存在 StandardController 標(biāo)準(zhǔn)控制器, 又存在 Controller 自定義控制器.

“控制器就是控制器。擴展不是控制器。不同之處在于擴展不能獨自放置在頁面上。換句話說,除非頁面上首先有一個控制器,否則不允許使用擴展名。另一個顯著特征是頁面只允許一個控制器。但是可以根據(jù)需要添加任意數(shù)量的擴展。”

正確案例 :

1. 當(dāng)我們同時需要用到 標(biāo)準(zhǔn)控制器 和 自定義控制器時, 可以將自定義控制器設(shè)為擴展性的

       standardController : 標(biāo)準(zhǔn)控制器

       Controller : 自定義控制器

       extensions  :  擴展性控制器

apex:page standardController= Solution_Programme__c  extensions= Solution_ProgrammeDeleteController  action= {!init}  sidebar= true 
  apex:outputPanel layout= none  rendered= {!IF(is_Alert_Delete, false,true )} 
  apex:form  
  apex  Solution 方案只有狀態(tài)為草案中時才可刪除 /apex br/ 
  apex  請點擊 a href= javascript: history.go(-1)   返回 /a /apex 
  /apex:form 
  /apex:outputPanel 
  apex:outputPanel layout= none  rendered= {!IF(is_Alert_Delete, true, false)} 
  apex:form  
  apex  刪除成功 /apex br/ 
  apex  請點擊 a href= javascript: history.go(-1)   返回 /a /apex 
  /apex:form 
  /apex:outputPanel 
 /apex:page

2. 自定義控制器

public with sharing class Solution_ProgrammeDeleteController { public String ids {get;set;}
 public boolean is_Alert_Delete {get; set;}
 public Solution_ProgrammeDeleteController(ApexPages.StandardController controller)
 { ids = ApexPages.currentPage().getParameters().get( id 
 }
 public void init(){ Solution_Programme__c solutionProgrames =[select id , Status__c from Solution_Programme__c where id = :ids];
 if (solutionProgrames.Status__c.contains( 草案中)){
 delete solutionProgrames;
 is_Alert_Delete = true;
 }else {
 is_Alert_Delete = false; 
 }
 
 }
}

以上就是“Salesforce 怎么自定義控制器”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,丸趣 TV 小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注丸趣 TV 行業(yè)資訊頻道。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-03發(fā)表,共計3538字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 桃源县| 惠安县| 荥阳市| 金溪县| 甘肃省| 阿勒泰市| 麻阳| 同心县| 宾川县| 微山县| 和田县| 武陟县| 嫩江县| 金沙县| 宁德市| 崇文区| 乳山市| 阿勒泰市| 五大连池市| 嘉鱼县| 铁岭县| 巴南区| 托克逊县| 顺义区| 鄯善县| 石景山区| 望江县| 和平县| 武隆县| 辰溪县| 巨野县| 湘阴县| 阿拉善右旗| 商都县| 教育| 常宁市| 克什克腾旗| 吉木乃县| 富民县| 金溪县| 武山县|