2012-05-31 6 views
2

У меня есть следующая страница, на которой показаны документы из базы данных, что я пытаюсь сделать, чтобы эта страница обновлялась или обновлялась автоматически, если новый документ добавляется в базу данных. Есть ли способ, которым я могу использовать AJAX или потянув или что-то в своем контроллере или странице, чтобы это сделать?Автоматическое обновление страницы Salesforce при обновлении базы данных

Страница:

<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; 

    } 

ответ

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 список , но поскольку вы уже делаете это в вашем геттер (который будет называться, когда таблица перерисовываются), этот метод может просто вернуться, не делая ничего особенного:

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

Спасибо, что это именно то, что я хотел :) – raym0nd

1

В качестве альтернативы вы можете использовать потоковый API.

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

+0

Система потокового API кажется, что было бы полезно для этого, но из-за чрезмерно ограничительные пределы (10 клиентов на канал макс) это действительно подходит только для сервера к серверу. – jkraybill

Смежные вопросы