2016-05-14 7 views
4

Ich habe folgenden cfdocument Code:Wie ein Seitenumbruch in cfdocument nach jeweils 4 Datensätze einzufügen

<cfdocument format="pdf" orientation = "landscape" bookmark="Yes" marginleft=".25" marginright=".25" marginTop = ".75" marginbottom=".75" scale="90" localUrl="yes"> 
    <cfoutput> 
     <cfdocumentsection name="Summary Page" marginleft=".25" marginright=".25" marginTop = "1.65" marginbottom="1" > 
      <cfdocumentitem type="header"> 
       <center> 
        <table width="1000" height="200" cellpadding="3" cellspacing="0"> 
         <tr><td>Header Page</td></tr> 
        </table> 
       </center> 
      </cfdocumentitem> 

      <cfloop query="first_query"> 
       <cfquery name="getDetails" dbtype="query"> 
        select * from first_query 
        where type= <cfqueryparam cfsqltype="cf_sql_varchar" value="#Type#"> 
       </cfquery> 

       <cfsavecontent variable="trhead"> 
        <tr class="bigbluecolor" style="text-align:center;"> 
         <td width="6%">Term</td< 
        </tr> 
       </cfsavecontent> 
       #trhead# 
       <cfloop query="getDetails"> 
        <tr align="center"> 
         <td width="6%">#Listfirst(TermYears,'.')# Years</td> 
        </tr> 
        <cfif getDetails.recordcount GT 6 AND getDetails.currentRow EQ 6> 
         <cfdocumentitem type="pagebreak"/> 
         #trhead# 
        </cfif> 
       </cfloop> 
      </table> 
      </td></tr></table> 
      </cfloop> 
     </cfoutput> 
    </cfdocumentsection> 
</cfdocument> 

Allerdings ist es nicht den Seitenumbruch tun. Es zeigt leere Seiten an der Spitze und dann beginnt es zu brechen, wo immer es will. Ich möchte, dass meine innere Schleife nach 4 Datensätzen bricht und der <TH> Header sich am Anfang der zweiten Seite erneut wiederholt.

Die trhead Variable enthält den Code, den ich mit der savecontent umschlossen habe, um es zu zeigen.

Kann mir jemand erklären, was mir fehlt?

+0

Wahrscheinlich nicht im Zusammenhang mit Ihrem Problem, aber ich würde das savecontent-Tag nur einmal, bevor Sie Ihre Schleife auszuführen. –

+0

Ich bin mir nicht sicher, ob Sie einfach Zeilenumbrüche zwischen den Tabellenzeilen '' setzen können. – RRK

Antwort

2

Die Unvorhersehbarkeit der Seitenumbrüche ist aus diesem Grund:

<cfif getDetails.recordcount GT 6 AND getDetails.currentRow EQ 6> 

Wenn getDetails weniger als 6 Datensätze hat, wird dieser Zustand nie wahr zurück. Plus, wenn Sie 12 oder mehr Datensätze haben, wird es nicht wahr zurückgeben. Ich schlage diesen Ansatz vor. Zuerst fügen Sie diese first_query:

order by type 

Dann bauen Sie Ihre Inhalte wie folgt aus:

<cfsavecontent variable="trhead"> 
<tr class="bigbluecolor" style="text-align:center;"> 
<td width="6%">Term</td> 
</tr> 
</cfsavecontent> 

<cfoutput query="first_query"> 
other content goes here 
<cfif currentRow mod 6 is 0> 
<cfdocumentitem type="pagebreak"/> 
#trhead#  
</cfif> 
</cfoutput> 
+0

Hallo @Dan: Dieser Ansatz hat nicht geklappt, zuerst hat er eine leere Seite erstellt und dann hat er mit den Kopfzeilen begonnen, aber das nur auf der zweiten Seite der PDF, wenn ich nach der ersten Frage trhead hinzugefügt hätte, dann was ich hinzufügen werde die zweite Abfrage –

+0

Ja, ich habe es ein bisschen geändert. Ich überlegte es zuerst. Sie sollten nicht mehr als eine Abfrage basierend auf Ihrer Frage benötigen. –

+0

Ich benutze eine Abfrage, aber es hat Abfrage von Abfrage t Filterdaten, auch wenn ich die Bestellklausel versuchte, funktionierte es immer noch nicht wie erwartet –