coldfusion
  • cfml
  • 2014-04-04 75 views 0 likes 
    0

    一个ColdFusion记录我想要做TOT就相当于:我怎样才能在分页CFSCRIPT

    <cfoutput query="queryName" startow="startrow" maxrows="maxrows"> 
        ...... 
    </cfoutput> 
    

    使用CFSCRIPT。

    到目前为止我的代码(在一个函数)是:

    _sqlStatement = 'SELECT first_name, surname, mail_address 
         FROM usersTable 
         WHERE 1=1 
         AND first_name LIKE :searchText 
         OR  surname LIKE :searchText 
         OR  mail_address LIKE :searchText 
         ORDER BY #arguments.sortname# #arguments.sortorder#'; 
    
    _qryGetUsers.setSQL(_sqlStatement); 
    _qryGetUsers.addParam(name="searchText",value="%" & #arguments.searchText# & "%",cfsqltype="CF_SQL_varchar"); 
    _qryGetUsers.setDatasource(myDataSourceName); 
    qUsers = _qryGetUsers.execute().getResult(); 
    
    //cfoutput equivalent 
    for(x=_startRow; x LTE qUsers.recordcount; x++) 
    { 
         ...... 
    } 
    

    感谢。

    +1

    代码请告诉我你来面对这个问题? – Jarede

    +0

    我需要知道如何去做。 – user2074648

    +2

    恩,你现在的代码有什么问题? – Jarede

    回答

    0

    在SQL Server 2012中您可以使用OFFSETFETCH指定开始行,分别为行数

    _sqlStatement = ' 
        DECLARE @OffsetRows tinyint = :offset 
        DECLARE @FetchRows tinyint = :fetch 
    
        SELECT first_name, surname, mail_address 
        FROM usersTable 
        WHERE 1=1 
        AND first_name LIKE :searchText 
        OR  surname LIKE :searchText 
        OR  mail_address LIKE :searchText 
        OFFSET @OffsetRows ROWS 
        FETCH NEXT @FetchRows ROWS ONLY 
        ORDER BY #arguments.sortname# #arguments.sortorder#'; 
    

    看到http://dbadiaries.com/new-t-sql-features-in-sql-server-2012-offset-and-fetch

    0

    如果你只是想在CFSCRIPT相当于:

    qUsers = _qryGetUsers.execute().getResult(); 
    _startrow=1; 
    _maxrows=10; 
    
    for(i=_startRow; i <= qUsers.recordcount && i - _startRow < _maxrows; i++) 
    { 
        writeOutput(qUsers.['name'][i] & "<br>"); 
    } 
    

    如果您正在生成HTML/XML,则CFML中的<cfloop query=会更容易且更易读能够。

    0

    它在cfscript中与简单的coldfusion没有区别。我正在给你提供有关Coldfusion分页逻辑的任何想法。

    看到分页的下方

    <cfset limt = 50> 
    <cfquery name="getCount" datasource="#application.datasource#"> 
        select COUNT(*) as cont from 
         ZIPCodes 
    </cfquery> 
    
        <cfset PagAddress = "#CGI.PATH_INFO#"> 
    <cfset totalRowsCount = getCount.cont> 
    <cfparam name="pre" default="0">  
    <!--- End category st atistics ---> 
    <cfparam name="url.grp" default="1"> 
    <!--- records to display per page ---> 
    <cfset displayrow = 10> 
    <!--- gets the number of pages ---> 
    <cfset lop = (totalRowsCount\displayrow)> 
    <cfif (totalRowsCount MOD displayrow) GTE 1> 
        <cfset lop = lop + 1> 
    </cfif> 
    
    <cfif isdefined("url.grp")> 
        <cfset startrows = ((url.grp - 1)*displayrow)+1> 
        <cfelse> 
        <cfset startrows = 1> 
    </cfif> 
    <cfset endrows = (startrows + displayrow)-1> 
    <cfif endrows GTE totalRowsCount> 
        <cfset endrows = totalRowsCount> 
    </cfif> 
    <cfsavecontent variable="pagination_HTML"> 
    <cfoutput> 
    
    <div class="pagination_main_cls"> 
    <div class="pagenation" style="width:800px;"> 
        <div class="jobs_days2"> 
         <cfif totalRowsCount GT 0><b>#startrows#&##45;#endrows#</b> of <b>#totalRowsCount#</b> Jobs  </cfif> 
    
    </div> 
    <div class="pagenation_numb" > 
    
        <cfif url.grp gt 1> 
         <cfset pre = url.grp -1> 
          <a href="#PagAddress#?grp=#pre#" title="Previous">&lt;Prev</a> 
        </cfif> 
    
        <cfset DisplayPageNumCount = 5> 
    
        <cfif #lop# LTE DisplayPageNumCount and #url.grp# LTE DisplayPageNumCount> 
         <cfset loop_from_val = 1> 
         <cfset loop_to_val = #lop#> 
        <cfelseif #lop# GT DisplayPageNumCount and #url.grp# LT DisplayPageNumCount>  
         <cfset loop_from_val = 1> 
         <cfset loop_to_val = DisplayPageNumCount> 
        <cfelse> 
         <cfset loop_from_val = #url.grp# - (DisplayPageNumCount-1)> 
         <cfset loop_to_val = #url.grp#> 
        </cfif> 
    
        <cfloop index="group" from="#loop_from_val#" to="#loop_to_val#"> 
         <cfif lop GT 1> 
         <!---<cfif url.grp is group>class="active"</cfif>---> 
          <cfif url.grp is group> 
           <a href="#PagAddress#?grp=#group#">#group#</a> 
          <cfelse>      
           [<a href="#PagAddress#?grp=#group#">#group#</a>] 
          </cfif> 
         </cfif> 
        </cfloop> 
        <cfif url.grp lt lop>  
         <cfif lop GT 1 AND lop gt DisplayPageNumCount>&hellip;</cfif> 
         <cfset nex = url.grp +1>   
          <a href="#PagAddress#?grp=#nex#" title="Next">Next &gt;</a>  
        </cfif> 
        </div>        
        </div> 
        </div> 
    
    </cfoutput> 
    </cfsavecontent> 
    
    
    <cfquery name="getMember" datasource="#application.datasource#"> 
        SELECT * 
        FROM ( 
         SELECT ZIPCode, ZIPType, myrow = ROW_NUMBER() OVER (ORDER BY ZIPCode) 
         FROM   ZIPCodes 
         )p 
         WHERE myrow BETWEEN #startrows# AND #endrows# 
    </cfquery> 
    
    
    <table border="1" cellpadding="0" cellspacing="0" > 
        <tr> 
         <th>Count</th> 
         <th>ZIPCode</th> 
         <th>ZIPType</th> 
        </tr> 
    
        <cfoutput query="getMember" > 
         <tr>  
          <td>#myrow#</td> 
          <td style="width:80px; text-align:left"> 
           #ZIPCode#     
          </td> 
          <td style="width:600px; text-align:left"> 
           #ZIPType#      
          </td> 
         </tr> 
        </cfoutput> 
    
    </table> 
    <cfoutput> 
        #pagination_HTML# 
    </cfoutput> 
    
    相关问题