菜鸟的C#学习笔记(第一篇)“实现DataGridView的分页效果”

标签: C#  分页  DataGridView

以下是我个人所能想到的最简单的方法,如果有什么逻辑上,格式上错误,还望各位大佬能够在百忙之中抽出点时间,指点一下,谢谢!!!

这个方法没用数据库,也就没用到SQL语句。

用的Take(),和Skip()方法进行截取。

第一步、拖界面

创建winform程序,然后开始拖控件

第二步、增加数据源类

创建一个类,当作gv显示的数据源。

    class column//集合类
    {
        public string col1{get;set;}//字段1,这些就是gv每列所对应的字段名
        public string col2{get;set;}//字段2
        public string col3{get;set;}//字段3
    }

在gv中绑定对应的字段

第三步、实现分页效果

    public partial class Form1 : Form
    {
        private List<column> col = new List<column>(); //实例化column

        public Form1()
        {
            InitializeComponent();
            for (int i = 0; i < 100; i++)//为该数据源赋值,填充100行数据
            {
                column c = new column();
                c.col1 = "第" + i + "行";
                c.col2 = "第" + i + "行";
                c.col3 = "第" + i + "行";
                col.Add(c);
            }
            Pagination();//绑定数据源,刷新界面。
        }


        /*-------------------------------------------下面为分页方法---------------------------------------------*/

        private int PageCount;//总页码
        private int CurrentPage = 1;//当前页码,默认第1页
        private int PageDisplay = 30;//单页显示的数量
        private List<column> Display;

        private void Pagination() //分页方法
        {
            //获得总页码
            PageCount = (int)Math.Ceiling((double)col.Count / PageDisplay);  
            //获取当前显示数据:先用Skip跳过前面的数据(当前页-1 * 每页显示的长度),再用Take获取指定数量的数据。就可以得到当前页需要显示的数据集合
            Display = col.Skip((CurrentPage - 1) * PageDisplay).Take(PageDisplay).ToList();
            //将数据集合绑定到gv表上
            gv1.DataSource = Display;
            //然后将下方显示更新
            tslPageCount.Text = "/" + PageCount;//总页码
            tstCurrentPage.Text = CurrentPage.ToString();//当前页码
        }

        /*-------------------------------------------下面为按钮事件---------------------------------------------*/

        private void tsbPageOn_Click(object sender, EventArgs e)//上一页按钮事件
        {
            //先判断当前页码是否为1,为1,就跳出
            if (CurrentPage != 1)
            {
                //不为1就将当前页码减1
                CurrentPage -= 1;
                //再进行页面刷新
                Pagination();
            }
        }


        private void tsbPageUp_Click(object sender, EventArgs e)//同理下一页按钮事件如下
        {
            //先判断当前页码是否为最后一页,是,就跳出
            if (CurrentPage != PageCount)
            {
                //不为1就将当前页码减1
                CurrentPage += 1;
                //再进行页面刷新
                Pagination();
            }
        }

 

版权声明:本文为dzfxzxd原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dzfxzxd/article/details/81677216