【问题标题】:Salesforce Page auto update upon update of databaseSalesforce 页面在数据库更新时自动更新
【发布时间】:2012-05-31 13:27:46
【问题描述】:

我有以下页面显示来自数据库的文档,我想要完成的是在数据库中添加新文档时使此页面自动刷新或更新。有没有办法可以在我的控制器或页面中使用 AJAX 或拉动或其他东西来完成?

页面:

    <apex:pageBlockTable value="{!docs}" var="d" rendered="{!NOT(ISNULL(docs))}" Title="Documents">  
        <apex:column headerValue="Name">
               <apex:outputText value="{!d.Name}"/>           
       </apex:column>   
   </apex:pageBlockTable>

控制器

 public List<FTPAttachment__c> getDocs()
    {
        docs= [Select Name from FTPAttachment__c where Case__c  = :cse.id];
        return docs;

    }

【问题讨论】:

    标签: salesforce apex-code visualforce


    【解决方案1】:

    听起来您正在寻找&lt;apex:actionPoller&gt; 标签:

    <apex:actionPoller action="{!refreshDocs}" rerender="docsTable" interval="5" />
    <apex:pageBlockTable id="docsTable" value="{!docs}" var="d" rendered="{!NOT(ISNULL(docs))}" Title="Documents">  
        <apex:column headerValue="Name">
            <apex:outputText value="{!d.Name}"/>           
        </apex:column>   
    </apex:pageBlockTable>
    

    您可以让refreshDocs() 方法显式重新填充docs 列表,但是由于您已经在getter 中执行此操作(将在重新渲染表时调用),因此此方法可以直接返回而无需做一些特别的事情:

    public List<FTPAttachment__c> getDocs() {
        return [Select Name from FTPAttachment__c where Case__c  = :cse.id];
    }
    public PageReference refreshDocs() {
        return null;
    }
    

    【讨论】:

    • 谢谢,这正是我想要的 :)
    【解决方案2】:

    【讨论】:

    • Streaming API 似乎对此很有用,但由于限制过于严格(每个通道最多 10 个客户端),它实际上只适用于服务器到服务器的通信。
    猜你喜欢
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 2022-01-08
    相关资源
    最近更新 更多