2012-04-03 5 views
1

Ich möchte auf ein Bild (commandLink) klicken, das zu einem Controller umleitet, der die Anzahl der Klicks berechnet und ein Feld im Objekt aktualisiert. Ich möchte die Seite jedoch nicht umleiten Das Fenster sollte angezeigt werden, damit der Benutzer eine Datei von Documents herunterladen kann.Befehlsverknüpfung Ohne Seitenumleitung

Hier ist mein Code. Kann mir jemand sagen, wie ich den Outputlink funktioniere ... mein Counter funktioniert aber gut.

<apex:pageBlockTable value="{!Docs}" var="d" rendered="{!if(Docs.size>0,true,false)}"> 

<apex:column >     
<apex:commandLink action="{!incrementCounter}"> 
<apex:image url="{!URLFOR($Resource.LibraryImages)}" title="Click to Download" /> 
<apex:param assignTo="{!SelectedId}" name="selId" value="{!d.Id}"/> 
<apex:outputLink value="/servlet/servlet.FileDownload?file={!d.Document_Id__c}"/>    
</apex:commandLink> 
</apex:column> 

<apex:column headerValue="Downloaded" > 
    <apex:outputText value="{!d.Counter__c}" /> 
    </apex:column> 

</apex:pageBlockTable> 

------------------------------------------- 

public pagereference incrementCounter() 
    { 

UpdateCount = [select id, counter__c from Document_Details__c where id =:SelectedId]; 

    Decimal num= updatecount.counter__c; 
    updatecount.counter__c=num+1; 
    update updatecount; 

Docs.clear(); 
    // to get the updated values from the object 

Docs=[Select id, Name__c, Document_Id__c,  counter__c,Uploaded_by__c,Type__c,Description__c,Document_Created_On__c,My_Library__c From 

Document_Details__c where My_Library__c=: MyLib.id]; 


return null; 

} 

Ich habe versucht, teilweise die Seite mit outputlink, Aktion Unterstützung und rerender zu aktualisieren, aber das nicht so funktionierten dachte ich an command verwenden.

Antwort

0

Elemente wie <apex:actionStatus> und <apex:commandLink> haben Javascript Ereignisse, die Sie diese Art der Sache zu erfüllen nutzen können, so würde ich auf Ihrer Seite so etwas wie das folgende tun:

<apex:commandLink action="{!incrementCounter}" 
    oncomplete="window.open('/servlet/servlet.FileDownload?file={!d.Document_Id__c}');"> 
    <apex:image url="{!URLFOR($Resource.LibraryImages)}" title="Click to Download" /> 
    <apex:param assignTo="{!SelectedId}" name="selId" value="{!d.Id}"/> 
</apex:commandLink> 

Auf diese Weise können Sie Ihre Methode aufrufen zu inkrementieren Sie den Zähler, und sobald dies erledigt ist, wird das Dokument in einem neuen Fenster geöffnet.