文档章节

曾今的代码系列——自己的分页控件+存储过程实现分页

 木宛城主
发布于 2015/03/02 19:42
字数 772
阅读 2
收藏 0
点赞 0
评论 0

项目里面的测试代码,仅供参考

LoginByAjax

<title>Ajax登陆</title>
    <script src="Scripts/common.js" type="text/javascript"></script>
    <script type="text/javascript">
        var xhr;
        window.onload = function () {
            xhr = new createXmlHttp();
            gel("btnLogin").onclick = loginByAjax;
        }
        function loginByAjax() {
            gel("msgImg").src = "Images/load.gif";
            var uName = gel("txtUserName").value;
            var uPwd = gel("txtPwd").value;
            var urlStr = "DoLogin.ashx"
            var data = "uName=" + uName + "&uPwd=" + uPwd;
            xhr.open("POST", urlStr, true);
            xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4) {
                    if (xhr.status == 200) {
                        var responseText = xhr.responseText;
                        if (responseText == "1") {
                            alert("登陆成功");
                            window.location = "Default.aspx";
                        }
                        else {
                            alert("登陆失败");
                        }
                    }
                }
            }
            xhr.send(data);

        }
    </script>

登陆成功后Default.aspx

public partial class Default : System.Web.UI.Page
    {
        protected StringBuilder sbTableContent = new StringBuilder();
        protected string PageHtml = string.Empty;
        protected int nextPage = 1;
        protected int nowPage = 1;
        
        BLL.StudentManager studentManager = new BLL.StudentManager();
        protected void Page_Load(object sender, EventArgs e)
        {
            //加载
            //加载之前先判断是否登陆
            if (new WebHelper().IsLogin())
            {
                LoadList();
            }
            else
            {
                Response.Redirect("AjaxLogin.aspx");
            }
       
        }
     
        private void LoadList()
        {
            int initRowCount=0;
            int initPageCount=0;
            MyPage page = new MyPage();
            page.TryParseCurrentPageIndex(Request.QueryString["page"]);

            List<Model.Students> listStudents = studentManager.QueryListByPageIndexPro(page.CurrentPageIndex,page.PageSize , out initRowCount, out initPageCount);
            page.PageCount = initPageCount;
            page.TotalCount = initRowCount;

            page.UrlFormat = "Default.aspx?page={n}";
            PageHtml = page.RenderToHTML();
            int index = (page.CurrentPageIndex - 1) * page.PageSize + 1;
            if (listStudents!=null)
            {
                foreach (Model.Students model in listStudents)
                {
                    sbTableContent.Append("<tr><td>" + index.ToString()+ "</td>");
                    sbTableContent.Append("<td>"+model.SClasses.CName+"</td>");
                    sbTableContent.Append("<td>"+model.SLoginName+"</td>");
                    sbTableContent.Append("<td>"+model.SCnName+"</td>");
                    sbTableContent.Append("<td>"+(model.SGender.Value?"":"")+"</td>");
                    sbTableContent.Append("<td>"+model.STel+"</td>");
                    sbTableContent.Append("<td>"+model.SAddtime.Value.ToShortDateString()+"</td>");
                    sbTableContent.Append("<td><a href='Modify.aspx?id="+model.SID.ToString()+"'>修改</a>&nbsp;<a href='javascript:doDel("+model.SID.ToString()+")'>删除</a>");
                    index++;
                }
            }

        }
    }

自绘分页控件

public class MyPage
    {
        public int TotalCount { get; set; }
        public int PageSize { get; set; }
        public int CurrentPageIndex { get; set; }
        public int MaxPageCount { get; set; }
        public string UrlFormat { get; set; }
        public int PageCount { get; set; }
        public MyPage()
        {
            PageSize = 4;
            MaxPageCount = 10;
        }
        private void Check()
        {
            System.Diagnostics.Debug.Assert(PageSize>0);
            System.Diagnostics.Debug.Assert(CurrentPageIndex>0);
            System.Diagnostics.Debug.Assert(!string.IsNullOrWhiteSpace(UrlFormat));
        }

        public void TryParseCurrentPageIndex(string pn)
        {
            int temp;
            if (int.TryParse(pn,out temp))
            {
                CurrentPageIndex = temp;
            }
            else
            {
                CurrentPageIndex = 1;
            }
        }
        public string RenderToHTML()
        {
            Check();
            StringBuilder sb = new StringBuilder();
            //double tempCount = (TotalCount+(0.0) )/ PageSize;
            //int pageCount = (int)Math.Ceiling(tempCount);
            int visibleStart = CurrentPageIndex - MaxPageCount / 2;
            if (visibleStart<1)//6还是没区别
            {
                visibleStart = 1;
            }
            int visibleEnd = visibleStart + MaxPageCount;
            if (visibleEnd > PageCount)
            {
                visibleEnd = PageCount;
            }
            if (CurrentPageIndex>1)
            {
                sb.Append(GetPageLink(1,"首页"));
                sb.Append(GetPageLink(CurrentPageIndex-1,"上一页"));
            }
            else
            {
                sb.Append("<span>首页</span>");
                sb.Append("<span>上一页</span>");
            }
            for (int i = visibleStart; i <=visibleEnd; i++)
            {
                if (i==CurrentPageIndex)
                {
                    sb.Append("<span>").Append(i).Append("</span>");
                }
                else
                {
                    sb.Append(GetPageLink(i,i.ToString()));
                }
            }
            if (CurrentPageIndex < PageCount)
            {
                sb.Append(GetPageLink(CurrentPageIndex+1,"下一页"));
                sb.Append(GetPageLink(PageCount, "末页"));
            }
            else
            {
                sb.Append("<span>下一页</span>");
                sb.Append("<span>末页</span>");
            }
            return sb.ToString();
        }
        private string GetPageLink(int i,string text)
        {
            StringBuilder sb = new StringBuilder();
            string url = UrlFormat.Replace("{n}",i.ToString());
            sb.Append("<a href='").Append(url).Append("'>").Append(text).Append("</a>")   ;
            return sb.ToString();
        }
    }

 

数据访问层的调用存储过程代码:

public List<Model.Students> QueryListByPageIndexPro(int pageIndex,int pageSize,out int rowCount,out int pageCount)
        {
            Model.Students model = null;
            DataTable dt = dbHelper.ExecProForPageList(pageIndex, pageSize, out rowCount, out pageCount);
            List<Model.Students> list = null;
            if (dt.Rows.Count>0)
            {
                list = new List<Model.Students>();
                foreach (DataRow dr in dt.Rows)
                {
                    model = new Model.Students();
                    SetDr2Model(dr,model);
                    list.Add(model);
                }
            }
            return list;
        }
public DataTable ExecProForPageList(int pageIndex, int pageSize, out int rowCount, out int pageCount)
        {
       
            SqlParameter[] parameters = 
            {
                new SqlParameter("@PageIndex",SqlDbType.Int,4),
                new SqlParameter("@PageSize",SqlDbType.Int,4),
                new SqlParameter("@RowCount",SqlDbType.Int,4),
                new SqlParameter("@PageCount",SqlDbType.Int,4)
            };
            parameters[0].Value = pageIndex;
            parameters[1].Value = pageSize;
            parameters[2].Direction = ParameterDirection.Output;
            parameters[3].Direction = ParameterDirection.Output;
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "GetPageDataOutRowPageCount";
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection = Connection;
            cmd.Parameters.AddRange(parameters);
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            adapter.Fill(dt);
            rowCount = Convert.ToInt32(parameters[2].Value);
            pageCount = Convert.ToInt32(parameters[3].Value);
            return dt;

        }

存储过程代码:

Create PROCEDURE [dbo].[GetPageDataOutRowPageCount]
(
@PageIndex int = 1,--当前页数 
@PageSize  int = 1,--每页大小
@RowCount int output,--总行数(传出参数)
@PageCount int output--总页数(传出参数)
)
AS
begin
    DECLARE @sql NVARCHAR(225),@sqlCount NVARCHAR(225)
    select @RowCount =COUNT(SID),@PageCount=CEILING((COUNT(SID)+0.0)/@PageSize) FROM Students where SIsDel=0
    SET @sql='SELECT TOP '+str(@PageSize) +' * FROM Students,Classes where SCID=CID and SIsDel=0 and SID not in(select top '+str((@PageIndex-1)*@PageSize) +' SID from Students where SIsDel=0)order by SID'
    print @sql
    EXEC(@sql)
end

总结

© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 222
码字总数 199010
作品 0
黄浦
Bootstrap响应式前端框架笔记十一——分页与标签

Bootstrap响应式前端框架笔记十一——分页与标签 在开发搜索结果页、列表页时通常会使用到分页器控件,Bootstrap中提供了方便的类来进行分页器的创建,示例如下: 效果如下: 为li元素添加d...

珲少 ⋅ 2016/12/13 ⋅ 0

ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页

关键字:DataGrid、存储过程、分页 出自:http://blog.csdn.net/yzx110/archive/2004/08/18/78525.aspx 摘要:在最进的一个项目中因为一个管理页面要管理的数据量非常大,所以必须分页显示,并...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

DataGrid连接Access的快速分页法(1)——需求与现状

作者:黎波 一、需求分析 DataGrid是一个功能强大的ASP.NET Web服务器端控件,它除了能够按各种方式格式化显示数据,还可以对数据进行动态的排序、编辑和分页。大大减轻了广大Web程序员的工作...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

周公51CTO博客有价值文章整理

说明:为方便朋友们查看本博客的文章,特地整理了本博客中周公认为值得一看的文章,不过有些文章因为年代久远且技术更新快的原因,里面所讲述的方法或者理论不再适合,请大家斟酌。 asp.net ...

周金桥 ⋅ 2011/06/23 ⋅ 0

java爬虫系列(三)——漫画网站爬取实战

项目地址 https://github.com/a252937166/seimicrawler.git 只需要以maven的形式导入demo这个项目就可以了。 数据库设计 ,基本注释都有。 ORM框架 我使用的是,相关配置信息请在修改。 代理...

Mr_OOO ⋅ 01/06 ⋅ 0

ADO.NET 2.0中的SqlCommand.ExecutePageReader

http://blog.joycode.com/liuhuimiao/ 在.NET 2.0 PDC或Beta1中,可以看到SqlCommand对象新增了个ExecutePageReader方法,该方法实现了分页读取数据的功能。对于分页读取数据,在ADO.NET1.1中...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

WPF基础到企业应用系列6——布局全接触

一. 摘要 首先很高兴这个系列能得到大家的关注和支持,这段时间一直在研究Windows Azure,所以暂缓了更新,同时也本着想把它写好、宁缺毋滥的精神,在速度上自然也就慢了下来,这篇文章拖拖拉...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

Fixwin电子窗体——表单报表控件与表单报表模板

Fixwin新增了表单控件与报表控件,用于开发带表单录入和报表展示功能的业务窗体。 通过Fixwin电子窗体,设计几种常用的功能模块模版,在开发实际的项目时,采用模板创建相应模块能够节省工作...

彭博 ⋅ 2012/03/09 ⋅ 0

PWMIS数据开发框架--PDF.NET

框架支持的功能 UI层(WinForm / Web)控件数据绑定、映射与查询; BLL层实体对象查询(OQL) DAL层SQL语句和.NET数据访问代码映射(查看 SQL-MAP 原理) 详细说来,框架还包含以下特色功能...

独行族妖侠 ⋅ 2013/07/22 ⋅ 2

明天回家,总结一下,提前拜个早年

我不是技术牛人,但是基本文章上总是发首页,为什么呢?因为我每次写文章都很努力,希望我的努力会给你带来收获,明年会更加努力滴。明天就回家了,在这里祝所有的园友们新春愉快。新的一年心...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 51分钟前 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 1

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

CentOS开机启动subversion

建立自启动脚本: vim /etc/init.d/subversion 输入如下内容: #!/bin/bash## subversion startup script for the server## chkconfig: 2345 90 10# description: start the subve......

随风而飘 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部