说明:(1)如果对分页的感兴趣的话,可以看一下我传的存储过程(“SQL 存储过程 分页”)  

            (2)分页,第一页、上一页,下一页、最后一页只调用点击(click)事件即可;如果想要实用性的好的话,txtNowPage,需              要调用3个事件,点击事件(click)、离开事件(leave)、目标按下事件(keypress)。

效果图:



代码实现如下:

public void DataBind()

{

            #region 数据绑定

            GetWhere();

            object[] page = new object[8];

            page[0] = "表或视图";

            page[1] = " 字段名称 ";

            page[2] = pagesize;//没有多少条记录

            page[3] = nowpage;//当前页码

            page[4] = strWhere;//查询条件

            page[5] = "表的主键";

            page[6] = sumpage;//总页数

            page[7] = sizecount;//总条数

            DataSet dset = new DataSet();

            dset = DataAccess.GetDataSet("P_Public_Paging", true, page);

            dgvMainTop.DataSource = dset.Tables[0];

            sumpage = Convert.ToInt32(dset.Tables[1].Rows[0][0].ToString());

            sizecount = Convert.ToInt32(dset.Tables[1].Rows[0][1].ToString());           

            lblSumCount.Text = "(共" + sizecount + "条记录)";

            txtNowPage.Text = nowpage + "/" + sumpage;

            PageState();           //分页状态

}

private void PageState()

        {

            #region  分页按钮状态

            if (sumpage <= 1)

            {

                btnUp.Enabled = false;

                btnNext.Enabled = false;

                btnFirst.Enabled = false;

                btnEnd.Enabled = false;

            }

            else

            {

                if (nowpage == 1)

                {

                    btnFirst.Enabled = false;

                    btnEnd.Enabled = true;

                    btnUp.Enabled = false;

                    btnNext.Enabled = true;

                }

                else if (nowpage == sumpage)

                {

                    btnUp.Enabled = true;

                    btnNext.Enabled = false;

                    btnFirst.Enabled = true;

                    btnEnd.Enabled = false;

                }

                else

                {

                    btnUp.Enabled = true;

                    btnNext.Enabled = true;

                    btnFirst.Enabled = true;

                    btnEnd.Enabled = true;

                }

            }

            #endregion

        }



        private void btnFirst_Click(object sender, EventArgs e)

        {

            #region  第一页按钮事件

            DataBind();

            #endregion

        }



        private void btnUp_Click(object sender, EventArgs e)

        {

            #region 上一页按钮事件

            nowpage--;

            DataBind();

            #endregion

        }



        private void btnNext_Click(object sender, EventArgs e)

        {

            #region 下一页按钮事件

            nowpage++;

            DataBind();

            #endregion

        }



        private void btnEnd_Click(object sender, EventArgs e)

        {

            #region  最后一页按钮事件

            nowpage = sumpage;

            DataBind();

            #endregion

        }



        private void txtNowPage_KeyPress(object sender, KeyPressEventArgs e)

        {

            #region 页码输入限制,允许输入0-9数字 回退键  回车键

            e.Handled = true;

            if (e.KeyChar >= '0' && e.KeyChar <= '9' || e.KeyChar == 8)

            {

                e.Handled = false;

            }

            if (e.KeyChar == 13)

            {

                btnFind.Focus();

            }

            #endregion

        }



        private void txtNowPage_Leave(object sender, EventArgs e)

        {

            #region 设置当前页 最大为总页数 最小1

            if (txtNowPage.Text == string.Empty)

            {

                nowpage = 1;

                txtNowPage.Text = nowpage + "/" + sumpage;

            }

            string strpage = txtNowPage.Text.Trim();

            string[] array = strpage.Split('/');

            txtNowPage.Text = array[0];

            int page = int.Parse(array[0]);



            if (page <= 1)

            {

                nowpage = 1;

                txtNowPage.Text = nowpage + "/" + sumpage;

            }

            if (page > sumpage)

            {

                nowpage = sumpage;

                txtNowPage.Text = nowpage + "/" + sumpage;

            }

            if (page > 1 && page <= sumpage)

            {

                nowpage = page;

            }

            DataBind();

            #endregion

        }



        private void txtNowPage_Click(object sender, EventArgs e)

        {

            #region  单击页码文本框

            string strpage = txtNowPage.Text.Trim();

            string[] array = strpage.Split('/');

            txtNowPage.Text = array[0];

            txtNowPage.Focus();

            txtNowPage.SelectAll();

            #endregion

        }

版权声明:本文为博主原创文章,未经博主允许不得转载。

winform 分页 分类: WinForm 2014-05-16 15:30 257人阅读 评论(0) 收藏的更多相关文章

  1. SQL 存储过程 分页 分类: SQL Server 2014-05-16 15:11 449人阅读 评论(0) 收藏

    set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- ============================================= -- Au ...

  2. PIE(二分) 分类: 二分查找 2015-06-07 15:46 9人阅读 评论(0) 收藏

    Pie Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissio ...

  3. Find The Multiple 分类: 搜索 POJ 2015-08-09 15:19 3人阅读 评论(0) 收藏

    Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21851 Accepted: 8984 Sp ...

  4. 周赛-DZY Loves Chessboard 分类: 比赛 搜索 2015-08-08 15:48 4人阅读 评论(0) 收藏

    DZY Loves Chessboard time limit per test 1 second memory limit per test 256 megabytes input standard ...

  5. Ultra-QuickSort 分类: POJ 排序 2015-08-03 15:39 2人阅读 评论(0) 收藏

    Ultra-QuickSort Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 48111   Accepted: 17549 ...

  6. Drainage Ditches 分类: POJ 图论 2015-07-29 15:01 7人阅读 评论(0) 收藏

    Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 62016 Accepted: 23808 De ...

  7. max_flow(Dinic) 分类: ACM TYPE 2014-09-02 15:42 94人阅读 评论(0) 收藏

    #include <cstdio> #include <iostream> #include <cstring> #include<queue> #in ...

  8. SQL 分组 加列 加自编号 自编号限定 分类: SQL Server 2014-11-25 15:41 283人阅读 评论(0) 收藏

    说明: (1)日期以年月形式显示:convert(varchar(7),字段名,120) , (2)加一列 (3)自编号: row_number() over(order by 字段名 desc) a ...

  9. SQL 按月统计(两种方式) 分类: SQL Server 2014-08-04 15:36 154人阅读 评论(0) 收藏

    (1)Convert 函数 select Convert ( VARCHAR(7),ComeDate,120) as Date ,Count(In_code) as 单数,Sum(SumTrueNum ...

随机推荐

  1. Linux 消息队列编程

    消息队列.信号量以及共享内存被称作 XSI IPC,它们均来自system V的IPC功能,因此具有许多共性. 键和标识符: 内核中的每一种IPC结构(比如信号量.消息队列.共享内存)都用一个非负整数 ...

  2. mysql5.7.14安装与配置

    参考文章链接: http://jingyan.baidu.com/article/afd8f4de9006d934e286e9fd.html http://www.cnblogs.com/wenthi ...

  3. java 优化

    代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是, ...

  4. fedora安装sublime text教程

    下载 http://pan.baidu.com/s/1eRkEegM 解压 终端中切换到下载文件的目录下,执行以下命令: sudo tar -jxvf sublime_text_3_build_308 ...

  5. [CSS]列表属性(List)

      CSS 列表属性(List) 属性 描述 CSS list-style 在一个声明中设置所有的列表属性. 1 list-style-image 将图象设置为列表项标记. 1 list-style- ...

  6. yii2的安装使用

    一.Yii2框架 Yii2框架有基本和高级两种版本,主要区别是高级版已经分好了前台.后台,基本版只有前台 二.归档安装方法 归档安装方发很简单,只需要在官网上下载归档文件后,解压即可使用(但是不使用c ...

  7. Python学习 - 简单抓取页面

    最近想做一个小web应用,就是把豆瓣读书和亚马逊等写有书评的网站上关于某本书的打分记录下来,这样自己买书的时候当作参考. 这篇日志这是以豆瓣网为例,只讨论简单的功能. 向服务器发送查询请求 这很好处理 ...

  8. Hive 的 排序

    全排序:order by对全部所有的数据进行排序,在实现的时候是放到一个reduce中进行的,可以想象这样做效率是比较低的: 局部排序:sort by对数据进行分组,然后在组内进行排序,每个reduc ...

  9. 变更到Android4.4的问题

    更新到Android 4.4,写了个小程序.发现运行不起来了.抛空指针异常.debug模式下,发现在onCreate方法中获取Button是null. Android 4.4把layout进行了重组, ...

  10. bzoj AC 50 庆祝~~

    No. 1050 Solved 50 Submit 212 AC 60 PE 6 WA 88 TLE 13 MLE 5 OLE 2 RE 29 CE 9 10001002100310041005 10 ...