分页整理

直接使用DataTble分页代码:

 /// <summary>
    /// DataTable分页
    /// </summary>
    /// <param name="dt">DataTable</param>
    /// <param name="PageIndex">页索引,注意:从1开始</param>
    /// <param name="PageSize">每页大小</param>
    /// <returns>分好页的DataTable数据</returns>              第1页        每页10条
    public static DataTable GetPagedTable(DataTable dt, int PageIndex, int PageSize)
    {
        if (PageIndex == 0) { return dt; }
        DataTable newdt = dt.Copy();
        newdt.Clear();
        int rowbegin = (PageIndex - 1) * PageSize;
        int rowend = PageIndex * PageSize;

        if (rowbegin >= dt.Rows.Count)
        { return newdt; }

        if (rowend > dt.Rows.Count)
        { rowend = dt.Rows.Count; }
        for (int i = rowbegin; i <= rowend - 1; i++)
        {
            DataRow newdr = newdt.NewRow();
            DataRow dr = dt.Rows[i];
            foreach (DataColumn column in dt.Columns)
            {
                newdr[column.ColumnName] = dr[column.ColumnName];
            }
            newdt.Rows.Add(newdr);
        }
        return newdt;
    }

大数据分页存储过程,修改重复项分页不显示。

ALTER PROCEDURE [dbo].[pager]
          (
             @tablename    nvarchar(4000),        --表名
    @strGetFields nvarchar(4000) = ‘*‘,  --查询列名
             @PageIndex    int,                --当前页
             @PageSize    int,                    --每页记录数
             @strWhere  nvarchar(4000) = ‘‘,     --查询条件
    @strOrder    nvarchar(500),        --排序字段,多字段必须要接ASC和DESC
    @intOrder bit = 0,        --排序类型  1为升序   0为降序
    @CountAll bigint output              --返回纪录总数用于计算页面数
)
AS
DECLARE @sqlstr        nvarchar(4000)

DECLARE @TableId    int                --表ID

SET @TableId = OBJECT_ID(@tablename)
IF @TableId IS NULL
BEGIN
    RAISERROR(‘表名或对象名不存在当前数据库中,请检查‘, 16, 1)
    RETURN
END

--设置查询条件
IF LEN(@strWhere)>0
set @strWhere=‘  WHERE   ‘+@strWhere

--取得总记录数
SET @sqlstr=‘SELECT @iRowCount=COUNT(*) FROM ‘+@tablename+‘ ‘+@strWhere
EXEC SP_EXECUTESQL @sqlstr, N‘@iRowCount int OUTPUT‘, @CountAll OUTPUT

--正反排序

    DECLARE @new_order2 VARCHAR(1000)      --正排序
IF LEN(@strOrder)>0
BEGIN
     SET @new_order2 = ‘ orDER BY ‘ + @strOrder
       IF charindex(‘,‘,@strOrder)>0
    BEGIN

            SET @new_order2 = @strOrder + ‘,‘
                 IF @intOrder = 1
                        BEGIN
                    SET @new_order2 = REPLACE(REPLACE(@new_order2,‘ASC,‘,‘{ASC},‘),‘DESC,‘,‘{DESC},‘)
                    SET @new_order2 = REPLACE(REPLACE(@new_order2,‘{ASC},‘,‘DESC,‘),‘{DESC},‘,‘ASC,‘)
                        END  

             SET @new_order2 = ‘ orDER BY ‘ + SUBSTRING(@new_order2,1,LEN(@new_order2)-1)   

    END
    ELSE
    BEGIN
         IF @intOrder = 1
                    BEGIN
                        SET @new_order2 = ‘ orDER BY ‘ + @strOrder + ‘ DESC‘    

                    END
    END
--插入SQL
set  @sqlstr=‘ select top ‘+cast((@PageIndex*@PageSize) as nvarchar)+‘ ‘+@strGetFields+‘ ,row_identityid = IDENTITY(int,1,1) INTO #TEMP    from ( select top ‘+cast((@PageIndex*@PageSize) as nvarchar)+‘ ‘+@strGetFields+‘ from  ‘+@tablename+‘  ‘+@strWhere+‘  ‘+@new_order2+‘ )a   select  ‘+@strGetFields+‘   from #TEMP   where row_identityid> ‘+cast((@PageSize*(@PageIndex-1)) as nvarchar)+‘  drop table #TEMP‘

END

ELSE
    BEGIN
--插入SQL
set  @sqlstr=‘ select top ‘+cast((@PageIndex*@PageSize) as nvarchar)+‘ ‘+@strGetFields+‘ ,row_identityid = IDENTITY(int,1,1) INTO #TEMP    from ( select top ‘+cast((@PageIndex*@PageSize) as nvarchar)+‘ ‘+@strGetFields+‘ from  ‘+@tablename+‘  ‘+@strWhere+‘  )a   select  ‘+@strGetFields+‘   from #TEMP   where row_identityid> ‘+cast((@PageSize*(@PageIndex-1)) as nvarchar)+‘  drop table #TEMP‘

END

--print @CountAll
--print @sqlstr
EXEC(@sqlstr)
时间: 2024-08-07 14:10:47

分页整理的相关文章

整理 java 分页思路

今天刚学分页还有些不是很清楚 想整理一下.. 1.要先创建数据库 把要显示的数据存入表里 2.就要开始写代码了 写一个JavaBean 创建数据库属性 用于存取 3.创建一个数据库查询类 这个类里有两个方法 一个方法返回数据表里的属性值和设置显示方法(用sql 语句设置为:select top "  每页显示的行数 " *from userinfo where id not in (select top " ((当前页面 - 1) * 每页的行数) "id from

bbs小项目整理(七)(消息分页展现)

分页显示发布的消息形成消息列表1.首先创建分页的javabean来装载分页的属性设置 在com.congbbs.javabean创建pageBean对象: package com.congbbs.javabean; public class PageBean { private int currPage; //当前页数 private int pageSize; //当前显示的记录数 private int totalCount; //总记录数 private int tatalPage; //

ajax 分页完全代码整理

/* ajax分页 */var page_cur = 1; //当前页 var total_num, page_size, page_total_num;//总记录数,每页条数,总页数function getData(page) { //获取当前页数据     $.ajax({          type: 'GET',          url: 处理数据地址,          data: {              'page': page,              'catid': 

MongoDB整理笔记のjava MongoDB分页优化

最近项目在做网站用户数据新访客统计,数据存储在MongoDB中,统计的数据其实也并不是很大,1000W上下,但是公司只配给我4G内存的电脑,让我程序跑起来气喘吁吁...很是疲惫不堪. 最常见的问题莫过于查询MongoDB内存溢出,没办法只能分页查询.这种思想大家可能都会想到,但是如何分页,确实多有门道! 网上用的最多的,也是最常见的分页采用的是skip+limit这种组合方式,这种方式对付小数据倒也可以,但是对付上几百上千万的大数据,却只能望而兴叹... 经过网上各种查找资料,寻师问道的,发现了

工作框架各种使用整理 -- 自己处理分页且输入条件中有过滤条件

1 <service verb="get" noun="ProductsByCategory"> 2 <in-parameters> 3 <parameter name="productCategoryId" required="true"/> 4 <parameter name="level" type="Integer" default-va

工作框架各种使用整理---自己处理分页

<service verb="get" noun="Products"> <in-parameters> <auto-parameters entity-name="mantle.product.Product"/> <parameter name="pageIndex" type="Integer" default-value="0"/>

整理第三方类库

网络 AFNetworking:mattt大神的网络事件处理框架. XMPPFramework:XMPP,主要用于即时通讯. CocoaAsyncSocket:异步socket请求框架. Reachability:用来检查应用当前的网络连接状况,是苹果Reachability类的直接替代品,支持ARC,支持block,使用GCD方法来通知网络接口的变化. SocketRocket:WebSocket协议是一种网络协议,它的Web设计实现了浏览器与服务器的双向通讯.通过使用WebSockets,你

分页查询优化

新]根据查询实体获取查询结果[SQL_CALC_FOUND_ROWS;SELECT FOUND_ROWS()一次性取出分页数据和满足条件的所有数据行] Select SQL_CALC_FOUND_ROWS SELECT FOUND_ROWS() --获取总行数 /// <summary> /// [新]根据查询实体获取查询结果 /// </summary> /// <typeparam name="SearchT">查询实体类型</typepa

ASP.NET MVC框架下添加菜单栏及分页项目

原创声明:本文为作者原创,转载请注明出处:http://www.cnblogs.com/DrizzleWorm/p/7274866.html ,谢谢! 我是做前端开发的,之前用C#的三层架构(UI.BLL.DAL)做过一个网站,这是我第一次接触ASP.NET MVC框架,首先给大家分享别人整理的ASP.NET MVC框架的一组教程:http://www.cnblogs.com/powertoolsteam/archive/2015/08/13/4667892.html内容很齐全,我是在先看了其他