C#:Winfrom 实现DataGridView 自定义分页

目录

安装Dapper依赖

安装SQLite依赖

新建SQLite数据库文件

主要代码示例

运行界面

C#:Winfrom 实现DataGridView 自定义分页

今天给大家分享Winform实现DataGridView 自定义分页的案例,感兴趣的朋友可以一起来学习一下。

采用技术:C#+Winform+Dapper+SQLite。

本次为了避免安装数据库的繁琐,采用了SQLite数据库。

  1. 安装Dapper依赖

命令如下:

Install-Package Dapper -Version 1.40.0

C#:Winfrom 实现DataGridView 自定义分页

1、安装SQLite依赖****

命令如下:

Install-Package System.Data.SQLite.Core -Version 1.0.116

C#:Winfrom 实现DataGridView 自定义分页
2、新建SQLite数据库文件****

目前数据库文件放在bin/debug 目录下,文件名为user.db ,大家不需要在新建了。

新建表脚本

CREATE TABLE "user" (
  "Id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  "UserName" TEXT NOT NULL,
  "Age" integer NOT NULL,
  "Address" TEXT NOT NULL,
  "Hobby" TEXT,
  UNIQUE ("Id" ASC)
);
INSERT INTO "main"."user" ("Id", "UserName", "Age", "Address", "Hobby") VALUES (1, '小明1', 35, '苏州', '读书');
INSERT INTO "main"."user" ("Id", "UserName", "Age", "Address", "Hobby") VALUES (2, '小明2', 35, '苏州', '读书');
INSERT INTO "main"."user" ("Id", "UserName", "Age", "Address", "Hobby") VALUES (3, '小明3', 35, '苏州', '读书');
INSERT INTO "main"."user" ("Id", "UserName", "Age", "Address", "Hobby") VALUES (4, '小明4', 35, '苏州', '读书');
INSERT INTO "main"."user" ("Id", "UserName", "Age", "Address", "Hobby") VALUES (5, '小明5', 35, '苏州', '读书');
INSERT INTO "main"."user" ("Id", "UserName", "Age", "Address", "Hobby") VALUES (6, '小明6', 35, '苏州', '读书');
INSERT INTO "main"."user" ("Id", "UserName", "Age", "Address", "Hobby") VALUES (7, '小明7', 35, '苏州', '读书');
INSERT INTO "main"."user" ("Id", "UserName", "Age", "Address", "Hobby") VALUES (8, '小明8', 35, '苏州', '读书');
INSERT INTO "main"."user" ("Id", "UserName", "Age", "Address", "Hobby") VALUES (9, '小明9', 35, '苏州', '读书');
INSERT INTO "main"."user" ("Id", "UserName", "Age", "Address", "Hobby") VALUES (10, '小明10', 35, '苏州', '读书');
INSERT INTO "main"."user" ("Id", "UserName", "Age", "Address", "Hobby") VALUES (11, '小明11', 35, '苏州', '读书');
INSERT INTO "main"."user" ("Id", "UserName", "Age", "Address", "Hobby") VALUES (12, '小明12', 35, '苏州', '读书');

3、主要代码示例****

新建DBUtils.cs 数据库帮助类

public static SQLiteConnection GetSQLiteConnection()
        {
            //Sqlite数据库地址
            string str = AppDomain.CurrentDomain.BaseDirectory;
            var con = new SQLiteConnection("Data Source=" + str + "DB\\user.db");
            return con;
        }
        ///
        /// 分页查询
        ///
        ///
        ///
        ///

        public static DataTable GetListTable(int pageIndex, int pageSize, ref int recordCount)
        {

            using (IDbConnection cnn = new SQLiteConnection(GetSQLiteConnection()))
            {
                pageIndex --;
                DataTable dt = new DataTable();
                cnn.Open();

                StringBuilder sbCount = new StringBuilder();
                sbCount.Append(@"SELECT count(id) recordCount from user where 1 = 1");
                StringBuilder sb = new StringBuilder();
                sb.Append(@"SELECT * from user where 1=1 ");

                recordCount = cnn.Query(sbCount.ToString()).FirstOrDefault();
                sb.Append(" order by id asc ");
                sb.AppendFormat(" limit {0} offset {1} ", pageSize, pageSize * pageIndex);
                var reader = cnn.ExecuteReader(sb.ToString());
                dt.Load(reader);
                return dt;
            }
        }
    }

新建Form2窗体文件,主要代码如下:

///
        /// 每页记录数
        ///
        private int pageSize = 3;

        ///
        /// 总记录数
        ///
        private int recordCount = 0;

        ///
        /// 总页数
        ///
        private int pageCount = 0;

        ///
        /// 当前页
        ///
        private int currentPage = 1;
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            txtCurrentPage.Text = "0";
            loadData();
        }
        ///
        /// 加载数据
        ///
        private void loadData()
        {
            dataGridView1.DataSource = DBUtils.GetListTable(currentPage, pageSize, ref recordCount);
            pageCount = (recordCount + pageSize - 1) / pageSize;
            if (pageCount == 0)
            {
                lblRecordCount.Text = "0";
                txtCurrentPage.Text = "0";
                lblTotal.Text = "/0页";
            }
            else
            {
                lblRecordCount.Text = "总记录数:" + recordCount;
                txtCurrentPage.Text = currentPage.ToString();
                lblTotal.Text = "/" + pageCount + "页";
            }

        }
        ///
        /// 首页
        ///
        ///
        ///

        private void btnFirst_Click(object sender, EventArgs e)
        {
            currentPage = 1;
            loadData();
        }
        ///
        /// 下一页
        ///
        ///
        ///
        private void btnNext_Click(object sender, EventArgs e)
        {
            if (currentPage < pageCount)
            {
                currentPage++;
                loadData();
            }
            else
            {
                MessageBox.Show("当前已经是最后一页");
            }
        }
        ///
        /// 上一页
        ///
        ///
        ///
        private void btnLast_Click(object sender, EventArgs e)
        {
            if (currentPage == 1)
            {
                MessageBox.Show("当前已经是第一页");
            }
            else
            {
                currentPage--;
                loadData();

            }
        }
        ///
        /// 末页
        ///
        ///
        ///

        private void btnEnd_Click(object sender, EventArgs e)
        {
            currentPage = pageCount;
            loadData();
        }
        ///
        /// 跳转页码
        ///
        ///
        ///

        private void btnGoTo_Click(object sender, EventArgs e)
        {
            if (!isIntergerNonZero(txtCurrentPage.Text.Trim()))
            {
                MessageBox.Show("跳转页码必须为正整数");
            }
            else
            {
               int page = Convert.ToInt32(txtCurrentPage.Text.Trim());
                if(page
                {
                    currentPage = page;
                    loadData();
                }
                else
                {
                    MessageBox.Show("跳转页面不能大于总页数");
                }

            }
        }
        ///
        /// 校验是否为正整数
        ///
        ///
        ///
        private static bool isIntergerNonZero(string str)
        {
            return string.IsNullOrWhiteSpace(str) ? false : Regex.IsMatch(str, @"^[1-9]\d*$");
        }

4、运行界面****

主要实现了当前记录数、共有多少页、首页、上一页、下一页、默认、指定页跳转的功能。

C#:Winfrom 实现DataGridView 自定义分页

以上就是Winfrom 实现DataGridView 自定义分页的案例,欢迎互相交流学习!

Original: https://blog.csdn.net/xishining/article/details/126477198
Author: IT技术分享社区
Title: C#:Winfrom 实现DataGridView 自定义分页

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816135/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球