salesforce extendsion and standart component 继承和标准组件的使用

//apex class 类
public without sharing class BMS_CN_Speaker_Query {//public without sharing 是这个类的访问限制条件。该类主要是实现查询  是对account类的扩展
    
    public Account account {get;set;}//在官方文档中 是定义为final类型的
    public list<Account> searchresult{get;set;}//如果想从页面上拿到这个数值,必须 getset
      
    // Constructor
    public BMS_CN_Speaker_Query(ApexPages.StandardController stdController) {//因为这个类继承了Account,所以用着中写法,这个是固定写法
        this.account = (Account)stdController.getRecord();//拿到account对象。可以通过这个变量接收页面中传递过来的数值。
    }   
       
    public PageReference search(){ //页面跳转的的一个方法。当返回值为空的时候 ,就不跳转。具体放在参看,稍后的其他文章
        
        string namestr = account.Name;
        string hospitalstr = account.Account_Group_vod__c;//医院接收不到数值。所以选择一个text类型的替代
        if(namestr != null){
            namestr ='%'+namestr+'%';
        }else namestr = '%%';
          
        if(hospitalstr != null){
            hospitalstr ='%'+hospitalstr+'%';
        }else hospitalstr = '%%';   
        
        this.searchresult = [SELECT Id,Department_BMS_CN__c, Name, Phone,Primary_Parent_vod__r.Name ,CreatedDate ,Speaker__c
                FROM Account where Department_BMS_CN__c =  :account.Department_BMS_CN__c  and
                     Name like :namestr and
                     Primary_Parent_vod__r.Name like :hospitalstr and
                     IsActive_BMS_CN__c = true AND RecordTypeId IN 
                     (SELECT Id FROM RecordType WHERE SobjectType = 'Account' AND Name = 'BMS - Individual')
                ];//查询语句。返回一个list给成员变量赋值。
            system.debug('####'+searchresult .size()+'#####'+hospitalstr );
        // Search result     
        if(searchresult.size() == 0) {
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO, '查无结果'));//提示框,在页面中必须通过 一个<apex:pageMessages /> 

        }
        
                
        return null;
        
    }
    
     
}

<apex:page standardController="Account" extensions="BMS_CN_Speaker_Query" standardStylesheets="true">
     <apex:form >
        <apex:pageBlock mode="edit"  id="block" title="Speaker Query">
            <apex:pageMessages />
            <apex:pageBlockSection title="检索条件" columns="1" >
                  <apex:pageBlockSectionItem >
                          <apex:outputLabel value="医生"></apex:outputLabel>
                          <apex:panelGroup >
                                <apex:inputField value="{! Account.Name}" required="true"/>
                          </apex:panelGroup>
                  </apex:pageBlockSectionItem>
                  <apex:pageBlockSectionItem >
                          <apex:outputLabel >科室</apex:outputLabel>
                          <apex:panelGroup >
                                <apex:inputField value="{! Account.Department_BMS_CN__c}"  required="false" />
                          </apex:panelGroup>
                  </apex:pageBlockSectionItem>  
                  <apex:pageBlockSectionItem >
                          <apex:outputLabel >医院</apex:outputLabel>
                          <apex:panelGroup >
                                <apex:inputField value="{! Account.Account_Group_vod__c}" required="false" />
                                <apex:commandButton value="查找" action="{! search}"  rerender="block" status="status" />
                          </apex:panelGroup>
                  </apex:pageBlockSectionItem>
            </apex:pageBlockSection>
            <apex:actionStatus id="status" startText="查找中..."/>
            <apex:pageBlockSection title="检索结果" id="resultsBlock" columns="1" rendered="{!  NOT(ISNULL(searchresult)) && NOT(searchresult.size == 0) }">
                    <apex:pageBlockTable value="{! searchresult }" var="act" >
                            
                            <apex:column value="{! act.Name}" headerValue="医生"/>
                            <apex:column value="{! act.Department_BMS_CN__c}" headerValue="科室"/>
                            <apex:column value="{! act.Primary_Parent_vod__r.Name}" headerValue="医院"/>
                            <apex:column >
                                <apex:facet name="header">是否讲者?</apex:facet>
                                <apex:outputText value="{! act.Speaker__c}"/>
                            </apex:column>
                            <apex:column value="{! act.CreatedDate}" headerValue="创建时间"/> 
                            

                    </apex:pageBlockTable>
            </apex:pageBlockSection>
        </apex:pageBlock>
    </apex:form>
    
    
   
</apex:page>

通过使用标准组件和extendsion,省去了接收数据的过程。在页面上在form表单中红输入内容,数据自动就保存到account对象中去了。后面接数据的时候,直接去相应的属性中拿值就好了。

<apex:actionStatus id="status" startText="查找中..."/>
<apex:commandButton value="查找" action="{! search}"  rerender="block" status="status" />



单击‘查找’之后,会在页面中显示‘查找中。。。’的字样。  注意actionStatus 中的id和Button中的status的值一样。

在标准的控件中,如果你的数据类型是checkbox,在页面上渲染的时候 自动就是checkbox的形式。如果你想要显示成 true或者false,只好这样写了

<apex:column >
                                <apex:facet name="header">是否讲者?</apex:facet>
                                <apex:outputText value="{! act.Speaker__c}"/>
                            </apex:column>

另外,

<apex:inputField value="{! Account.Department_BMS_CN__c}"  required="false" />
这句代码只能用在standardcontroller中, required = true 是说 必填。false就是可选的了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值