• 几种不同的分页处理办法



    --------------------------------------第一种:利用动软代码生成器生成的分页------------------------------------
    //新建一个一般处理程序
    pageIndex = int.Parse(HttpContext.Current.Request.Params["page"]);//获取到页数
    pageSize = int.Parse(HttpContext.Current.Request.Params["rows"]);//获取每页的大小

    total = bll.GetRecordCount(" " );//获取总数

    DataSet ds = bll.GetListByPage(" ", "ID", (pageIndex - 1) * pageSize + 1, pageSize * pageIndex);//GetRecordCount,GetListByPage都是生成器生成
    list = bll.DataTableToList(ds.Tables[0]);//DataTableToList
    var data = new { total = total, rows = list };//EasyUI中的datagrid返回json数据的格式
    //将data集合构造成Json字符串
    HttpContext.Current.Response.Write(Kits.SerializeToJson(data));//SerializeToJson是在公共类的一个办法

    ----------------------------------第二种:利用LaomaPager生成类插件来分页--------------------------------------------------------------------------
    --后台页面
    protected List<Model.HKSJ_Main> mainShow = new List<Model.HKSJ_Main>();

    //实现分页显示图片数据
    protected string NavPager { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
    //获取网站Main表中的数据
    BLL.HKSJ_Main mainServices = new BLL.HKSJ_Main();

    //首先获取分页参数
    int pageSize = Request["pageSize"] == null ? 10 : Convert.ToInt32(Request["pageSize"]);
    int pageIndex = Request["pageIndex"] == null ? 1 : Convert.ToInt32(Request["pageIndex"]);

    //获取到totalCount的数据
    int totalCount = mainServices.GetRecordCount(string.Empty);

    //计算在页面上面显示的分页的数量
    DataSet ds = mainServices.GetListByPage(string.Empty, "ID", pageSize * (pageIndex - 1) + 1, pageIndex * pageSize);
    //内容数据显示
    mainShow = mainServices.DataTableToList(ds.Tables[0]);
    //分页数据显示,LaomaPager是封装类插件
    NavPager = Common.LaomaPager.ShowPageNavigate(pageSize, pageIndex, totalCount);
    }

    注释说明:GetListByPage是生成器里面就可以直接用的,LaomaPager是封装类插件(找一个就好)

    --前台页面
    <div class="pages"><%=NavPager %></div>

    --前台页面表格数据
    <asp:Content ID="Content2" ContentPlaceHolderID="Content" runat="server">
    <table style=" 100%">
    <tr>
    <th>ID</th>
    <th>title</th>
    <th>content</th>
    <th>people</th>
    <th>date</th>
    <th>status</th>
    <th>MainPeople</th>
    </tr>

    <%foreach (var empoyees in Empoyees)
    {%>
    <tr>
    <td><%=empoyees.ID %></td>
    <td><%=empoyees.title %></td>
    <td><%=empoyees.content %></td>
    <td><%=empoyees.people %></td>
    <td><%=empoyees.date %></td>
    <td><%=empoyees.status %></td>
    <td><%=empoyees.MainPeople %></td>
    </tr>
    <%} %>
    </table>

    </asp:Content>
    <asp:Content ID="Content3" ContentPlaceHolderID="NavPage" runat="server">
    <%=NavPager %>
    </asp:Content>

    --------------------------------------第三种:利用存储过程分页--------------------------------------------------
    //新建一个一般处理程序
    //接收表格的分页数据
    strPageIndex = context.Request.Params["page"];
    strPageSize = context.Request.Params["rows"];

    PagedData pageData = new PagedData() { PageIndex = int.Parse(strPageIndex), PageSize = int.Parse(strPageSize) };//PagedData 是一个公共类,如下面


    //调用存储过程来查询数据 并使用out 修改输出参数的值
    var workFlowList = workFlowBll.GetPageDataByProcedure(int.Parse(strPageIndex), int.Parse(strPageSize), "IsDel='false'", out rowCount);

    //List<NanFang_WorkFlowNode> workFlowNodeList = workFlowNodeBll.GetModelList(" IsDel='false'");

    //将必要的数据赋值给EasyUI需要的变量
    pageData.rows = workFlowList;
    pageData.total = rowCount;

    string str=Kits.SerializeToJson(pageData);
    context.Response.Write(str);

    //PagedData公共类
    public class PagedData
    {
    public int PageIndex;
    public int PageSize;
    public int total;// RowCount; 是为 EasyUI的datagrid组件 而改
    public object rows;//PagedList; 是为 EasyUI的datagrid组件 而改

    public int PageCount
    {
    get
    {
    return (int)Math.Ceiling(Convert.ToDouble(total) / Convert.ToDouble(PageSize));
    }
    }
    }
    //在BLL层添加
    public List<NanFang.Model.NanFang_WorkFlow> GetPageDataByProcedure(int pageIndex, int pageSize, string strWhere, out int rowsCount)
    {
    DataSet ds = dal.GetPageDataByProcedure(pageIndex, pageSize, strWhere, out rowsCount);
    return DataTableToList(ds.Tables[0]);
    }
    //在IDAL层添加
    DataSet GetPageDataByProcedure(int PageIndex, int PageSize, string strWhere, out int rowsCount);
    //在DAL层添加
    public DataSet GetPageDataByProcedure(int PageIndex, int PageSize, string strWhere, out int rowsCount)
    {
    SqlParameter[] parameters = {
    new SqlParameter("@pageIndex", SqlDbType.Int),
    new SqlParameter("@pageSize", SqlDbType.Int),
    new SqlParameter("@strWhere", SqlDbType.NVarChar,200),
    new SqlParameter("@rowCount", SqlDbType.Int)
    };
    parameters[0].Value = PageIndex;
    parameters[1].Value = PageSize;
    parameters[2].Value = strWhere;
    parameters[3].Direction = ParameterDirection.Output;

    return DbHelperSQL.RunProcedure("usp_GetWorkFlowPage", parameters, out rowsCount);//RunProcedure办法是代码生成器自带的
    }
    //在数据库中写的存储过程

    USE [NanFang_Hospital]
    GO
    /****** Object: StoredProcedure [dbo].[usp_GetWorkFlowPage] Script Date: 04/02/2014 11:13:25 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER procedure [dbo].[usp_GetWorkFlowPage]
    @pageIndex int,--查询的起始页
    @pageSize int,--每页多少条数据
    @strWhere nvarchar(200),--查询workFlow表的条件
    @rowCount int output --输出函数
    AS
    BEGIN
    declare @startNum nvarchar(10),--当前页开始的索引
    @endNum nvarchar(10),--当前页结束索引
    @sqlCount nvarchar(300),--查询数据的总行数
    @sqlSelect nvarchar(300)
    set @startNum=cast((@pageIndex-1)*@pageSize as nvarchar(10))--计算当前页开始的索引
    set @endNum=cast(@pageIndex*@pageSize as nvarchar(10))--计算当前页结束的索引
    --判断是否有条件的查询
    if(LEN(@strWhere)>1)
    --有条件的查询就执行下面语句
    begin
    set @sqlCount=N'select @rowCount=count(ID) from dbo.NanFang_WorkFlow where '+@strWhere
    set @sqlSelect='select k.* from (select ROW_NUMBER() over(order by ID) AS num,* FROM dbo.NanFang_WorkFlow where '+@strWhere+') as k where k.num>'+@startNum+' and k.num<='+@endNum+' order by k.AddTime asc '
    end

    else
    begin
    set @sqlCount=N'select @rowCount=count(ID) from dbo.NanFang_WorkFlow '
    set @sqlSelect='select k.* from (select ROW_NUMBER() over(order by ID) AS num,* FROM dbo.NanFang_WorkFlow ) as k where k.num>'+@startNum+' and k.num<='+@endNum+' order by k.AddTime asc '
    end

    --查询总行数:执行系统内置的存储过程
    exec sp_executesql @sqlCount,N'@rowCount int output',@rowCount output

    exec sp_executesql @sqlSelect
    END

  • 相关阅读:
    面试题:Spring的理解
    静态块与静态变量
    构造方法与构造块的执行顺序(区别于static)
    子类调用父类的构造函数几种情况
    使用json遇到的问题
    页面加载,使用ajax查询某个类别,并且给它们添加(拼接)连接
    对某个商品的上下架状态进行改变
    SSH后台管理系统,实现查询+分页
    跟上Java8
    java中值传递和引用传递
  • 原文地址:https://www.cnblogs.com/115FXC/p/3862137.html
Copyright © 2020-2023  润新知