2

我有以下页面显示来自数据库的文档,我想要完成的是在数据库中添加新文档时自动刷新或更新此页面。有没有办法可以在我的控制器或页面中使用 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;

    }
4

2 回答 2

2

听起来您正在寻找<apex:actionPoller>标签:

<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;
}
于 2012-05-31T14:58:55.363 回答
1

或者,您可以使用流式传输 API。

http://www.salesforce.com/us/developer/docs/api_streaming/index.htm

于 2012-06-03T01:42:08.100 回答