DataGridView实现分页

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace XjxMobilenursing
{
    public partial class PagerCtrl : UserControl
    {
        public PagerCtrl()
        {
            InitializeComponent();
        }
        [Browsable(true)]
        [Category("页面记录数")]
        [Description("显示页面记录数")]
        [DefaultValue(typeof(int), "10")]
        public int PageSize{ get;set; }
        public Hashtable condition { get; set; }//查询条件
        private int totalCount = 0;//总记录数
        public int TotalCount
        {
            get { return totalCount; }
            set
            {
                totalCount = value;
                if (totalCount <= 0) totalCount = 0;
                if (totalCount <= PageSize)
                {
                    lkbNextPage.Enabled = false;
                }
                else
                {
                    lkbNextPage.Enabled = true;
                }
                lkbPrePage.Enabled = false;
                lblPageSize.Text = PageSize.ToString();
                lblTotalCount.Text = totalCount.ToString();
                lblPageNum.Text = PageNum.ToString();
            }
        }
        public int BeginPage//起始记录
        {
            get
            {
                return (currentPage - 1) * PageSize + 1;
            }
        }
        public int EndPage { //结束记录
            get {
                if ((CurrentPage < PageNum) || TotalCount % PageSize == 0)
                    {
                        return BeginPage + PageSize - 1;
                    }
                return BeginPage + (TotalCount % PageSize) - 1;
             }
        }

        private int currentPage = 1;//当前第几页
        public int CurrentPage
        {
            get { return currentPage; }
            set
            {
                currentPage = value;
                lblCurrentPage.Text = currentPage.ToString();
            }
        }

        public int PageNum
        {
            get
            {
                int pageNum = 0;//总的页数
                if (PageSize > 0)
                {
                    pageNum = (totalCount % PageSize == 0) ? (totalCount / PageSize) : (totalCount / PageSize) + 1;
                }
                return pageNum;
            }
        }
        public delegate void LoadDataSouceDelegate(Hashtable condition);
        public event LoadDataSouceDelegate LoadDataSouce;
        private void lkbFirstPage_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {//首页
            CurrentPage = 1;
            LoadDataSouce(condition);
            lkbPrePage.Enabled = false;
            if (TotalCount > PageSize)
            {
                lkbNextPage.Enabled = true;
            }
        }

        private void lkbPrePage_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {//上一页
            CurrentPage--;
            LoadDataSouce(condition);
            lkbNextPage.Enabled = true;
            if (CurrentPage <= 1)
            {
                CurrentPage = 1;
                lkbPrePage.Enabled = false;
            }
            else
            {
                lkbPrePage.Enabled = true;
            }
        }

        private void lkbNextPage_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {//下一页
            CurrentPage++;
            LoadDataSouce(condition);
            lkbPrePage.Enabled = true;
            if (CurrentPage < PageNum)
            {
                lkbNextPage.Enabled = true;
            }
            else
            {
                CurrentPage = PageNum;
                lkbNextPage.Enabled = false;
            }
        }

        private void lkbLastPage_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {//尾页
            CurrentPage = PageNum;
            LoadDataSouce(condition);
            lkbNextPage.Enabled = false;
            if (TotalCount > PageSize)
            {
                lkbPrePage.Enabled = true;
            }
        }

        private void btnGo_Click(object sender, EventArgs e)
        {//跳转
            if (!StringCommon.IsNumeric(txtWherePage.Text.Trim()))
            {
                MessageBox.Show("请输入数字");
                return;
            }
            int goWherePage = StringCommon.ToInt32Value(txtWherePage.Text.Trim(),1);
            if (goWherePage <= 0 || goWherePage > PageNum)
            {
                MessageBox.Show(string.Format("请输入1~{0}之间的数",PageNum));
                return;
            }
            CurrentPage = goWherePage;
            LoadDataSouce(condition);
            if (CurrentPage <= 1)
            {
                lkbPrePage.Enabled = false;
            }
            else
            {
                lkbPrePage.Enabled = true;
            }
            if (CurrentPage < PageNum)
            {
                lkbNextPage.Enabled = true;
            }
            else
            {
                lkbNextPage.Enabled = false;
            }
        }
    }
}

DataGridView实现分页

时间: 2024-10-28 23:52:44

DataGridView实现分页的相关文章

WinForm下编写分页控件,实现DataGridView的分页效果

 前几天做C/S项目的时候用到了分页查询,所以就想去网上找一些封装好的分页控件,类似BS项目中的那种.但是找了好几个都不是特别的好,没有自己想要的.而且WinForm 里面的DataGridView也不像WebForm里面的GridView那样有自带的分页功能.没办法还是自己动手封装一个吧,以后复用也方便. 从网上找了几个demo做了一下,实现挺简单的. 用到的方法就是编写一个用户控件,下面说明如何实现: 一,先画界面 新建一个用户控件,然后拖拽几个标签,文本框和按钮,排列好.如下图所示:

winform中DataGridView实现分页功能

http://liyaguang20111105.blog.163.com/blog/static/19929420220146283255809/ 在winform的设计中,要实现对DataGridView控件的分页功能,需要两个控件:BindingSource.BindingNavigator,根据需求可对BindingNavigator进行自由的扩展,下图的示例则是根据一般需求对分页功能的实现.红色区域是对BindingNavigator控件扩展后的效果. 具体实现过程 : //窗体构造方

【C#】DataGridView的分页功能

1.分页整体显示如下: 主要包括功能如下: 1)显示总页数.当前页数 2)向前,向后翻页功能 3)显示首页,显示最后一页功能 4)自定义跳转页面功能 2.页面设计部分(.Designer.cs文件): partial class DGVPager { /// <summary> /// 必需的设计器变量. /// </summary> private System.ComponentModel.IContainer components = null; /// <summar

winform ListView和DataGridView实现分页

用到的控件有 code: listviewPaging using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace

创建有输出参数的存储过程并在c#中实现DataGridView分页功能

不足之处,欢迎指正! 创建有输出参数的存储过程 if exists(select * from sysobjects where name='usp_getPage1') drop procedure usp_getPage1 go create procedure usp_getPage1--存储过程名称 @count int output,--输出参数 @countIndex int=1,--参数带默认值 @countPage int=5--参数带默认值 as --一个sql语句.ROW_N

WinForm DataGridView分页功能

WinForm 里面的DataGridView不像WebForm里面的GridView那样有自带的分页功能,需要自己写代码来实现分页,效果如下图: 分页控件  .CS: 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.T

winform 自定义分页控件 及DataGridview数据绑定

分页效果如上图所示,用到的控件均为基本控件 ,其方法如下 右击项目-添加-新建项 选择用户控件 然后在用户控件中拖入所需要的Label,Button,Text 用户控件全部代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; usin

C# winform 分页控件 datagridview列宽度自适应

版权归原作者(伍华聪)所有. VS2019 .Net FrameWork 4.7.2 1.修改按钮上文字,调整按钮大小.修改按钮和文本框字体为Microsoft Sans Serif, 9pt”,字体电脑中都有,可以尽量水平和垂直居中. 2.因为没有文档,导出excel总不成功,取消掉了导出按钮. 3.修改分页控件水平居中. 下载 视频 4.datagridview列宽度自适应 using System; using System.Collections.Generic; using Syste

DataGridView分页

由于项目需要,自己写了一个小小的分页控件,如下图: 控件属性如下图:四个自定义属性 代码: int pageSize = 10; [Browsable(true)] [Description("每页显示的条数 ")] public int PageSize { get { return pageSize; } set { if (pageSize != value) { pageSize = value; this.Invalidate(); } } } int pageCount =