winform分页控件 附源码下载

yizhihongxing

Winform分页控件攻略

什么是Winform分页控件

Winform分页控件是一种用来在Windows桌面应用程序中实现数据分页显示的控件,它可以实现数据的分页查询、快速定位和显示,是非常实用的控件之一。

如何使用Winform分页控件

1. 控件的引入

您可以下载自己喜欢的Winform分页控件控件,或自行编写相应的控件。后文以“PagerControl”作为控件名示例。

您可以在项目中使用NuGet引入PagerControl. 或者从Github下载源码自行编译使用。

2. 控件的基本配置

在使用PagerControl之前,您需要进行以下配置:

PagerControl.Pager pager = new PagerControl.Pager();

pager.OnPageChanged += Pager_OnPageChanged; //定义翻页事件

pager.PageIndex = 1; //当前页码

pager.PageSize = 10; //每页显示的行数

pager.RecordCount = 100; //数据总记录数

以上内容设定了Pager的翻页事件、当前页码、每页显示的行数和数据总记录数等基本参数。

3. 数据的绑定

数据绑定需要您自行实现。例如,您可以使用Ado.NET或Entity Framework获取数据并将其填充到DataGridView等控件中,再将控件绑定到PagerControl上,实现分页显示功能。

void BindData()
{
    DataTable dt = GetData(); //获取数据表

    pager.RecordCount = dt.Rows.Count; //数据总记录数

    int start = (pager.PageIndex - 1) * pager.PageSize; //起始位置

    int end = start + pager.PageSize; //结束位置

    if (end > pager.RecordCount) //如果结束位置大于总记录数,将结束位置设置为总记录数
    {
        end = pager.RecordCount;
    }

    DataTable pageData = dt.Clone(); //创建当前页数据表的结构

    for (int i = start; i < end; i++) //按照起始位置和结束位置遍历数据表
    {
        pageData.ImportRow(dt.Rows[i]); //将符合条件的数据行添加到当前页数据表中
    }

    dataGridView1.DataSource = pageData; //将当前页数据表绑定到DataGridView中
}

以上代码使用自定义的GetData()方法获取数据表,再根据当前页码和每页显示的行数对数据表进行分页,最终将符合条件的数据绑定到DataGridView中。

4. 控件的显示

pager.Dock = DockStyle.Bottom; //将PagerControl放置在窗口底部

this.Controls.Add(pager); //将PagerControl添加到窗口中

dataGridView1.Dock = DockStyle.Fill; //将DataGridView填充窗口

this.Controls.Add(dataGridView1); //将DataGridView添加到窗口中

将PagerControl和DataGridView添加到窗口中,PagerControl放在窗口底部,DataGridView填充整个窗体。

示例说明

以下是两个使用PagerControl显示数据的示例说明。

示例一:使用Ado.NET显示学生列表

  1. 创建一个Windows应用程序,将PagerControl控件和DataGridView控件添加到窗口中。

  2. 使用SqlDataAdapter和DataSet对象从数据库中获取学生数据表,将其填充到DataGridView中。

  3. 在PagerControl的OnPageChanged事件中重新绑定数据,实现数据的分页显示。

详细代码如下:

private void Form1_Load(object sender, EventArgs e)
{
    string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString; //读取连接字符串

    SqlConnection connection = new SqlConnection(connectionString);

    connection.Open(); //连接数据库

    string sql = "SELECT * FROM Students";

    SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);

    DataTable dt = new DataTable();

    adapter.Fill(dt); //填充数据

    connection.Close(); //关闭连接

    dataGridView1.DataSource = dt; //将数据绑定到DataGridView中
}

private void Form1_Shown(object sender, EventArgs e)
{
    pager.OnPageChanged += Pager_OnPageChanged; //定义翻页事件
}

private void Pager_OnPageChanged(object sender, EventArgs e)
{
    BindData(); //重新绑定数据
}

void BindData()
{
    DataTable dt = dataGridView1.DataSource as DataTable; //获取原始数据表

    pager.RecordCount = dt.Rows.Count; //数据总记录数

    int start = (pager.PageIndex - 1) * pager.PageSize; //起始位置

    int end = start + pager.PageSize; //结束位置

    if (end > pager.RecordCount) //如果结束位置大于总记录数,将结束位置设置为总记录数
    {
        end = pager.RecordCount;
    }

    DataTable pageData = dt.Clone(); //创建当前页数据表的结构

    for (int i = start; i < end; i++) //按照起始位置和结束位置遍历数据表
    {
        pageData.ImportRow(dt.Rows[i]); //将符合条件的数据行添加到当前页数据表中
    }

    dataGridView1.DataSource = pageData; //将当前页数据表绑定到DataGridView中
}

示例二:使用Entity Framework显示商品列表

  1. 使用Entity Framework从数据库中获取商品数据,并将其填充到DataGridView中。

  2. 在PagerControl的OnPageChanged事件中重新绑定数据,实现数据的分页显示。

详细代码如下:

private void Form1_Load(object sender, EventArgs e)
{
    ProductContext context = new ProductContext(); //创建数据上下文

    dataGridView1.DataSource = context.Products.ToList(); //将数据绑定到DataGridView中
}

private void Form1_Shown(object sender, EventArgs e)
{
    pager.OnPageChanged += Pager_OnPageChanged; //定义翻页事件
}

private void Pager_OnPageChanged(object sender, EventArgs e)
{
    BindData(); //重新绑定数据
}

void BindData()
{
    ProductContext context = new ProductContext(); //创建数据上下文

    pager.RecordCount = context.Products.Count(); //数据总记录数

    int start = (pager.PageIndex - 1) * pager.PageSize; //起始位置

    var query = context.Products.OrderBy(p => p.Id).Skip(start).Take(pager.PageSize); //按照条件查询数据

    dataGridView1.DataSource = query.ToList(); //将当前页数据绑定到DataGridView中
}

以上代码演示了使用Entity Framework获取商品数据并进行数据绑定和分页显示的过程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:winform分页控件 附源码下载 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Flash中this构造函数不能表示参数的含义该怎么办?

    Flash中this构造函数不能表示参数的含义该怎么办? 在Flash中,this关键字在构造函数中表示当前实例化的对象。然而,this关键字无法直接表示构造函数的参数。为了解决这个问题,可以使用其他变量名来表示构造函数的参数。以下是解决方法的详细攻略: 使用其他变量名来表示构造函数的参数。例如,可以使用param或arg等变量名来表示构造函数的参数。示例代…

    other 2023年10月13日
    00
  • iOS13.4Beta1怎么升级 iOS13.4 Beta1新特性与升降级全攻略

    iOS 13.4 Beta 1 升级攻略 iOS 13.4 Beta 1 是苹果公司最新发布的测试版操作系统,本攻略将详细介绍如何升级到 iOS 13.4 Beta 1,并介绍一些新特性。请按照以下步骤进行操作: 步骤一:备份数据 在升级操作系统之前,建议您先备份设备中的所有数据。这样可以确保在升级过程中不会丢失任何重要的信息。您可以通过 iTunes 或 …

    other 2023年8月3日
    00
  • cmd findstr 字符串查找增强使用说明

    用 findstr 命令可以在文本文件中查找字符串的匹配情况。它是在 Windows 系统中常用的一个命令,并支持正则表达式的语法。本攻略将详细讲解 findstr 命令的使用方法。 命令语法 findstr 命令的基本语法如下: findstr [options] <string> [<filename>…] 其中,<st…

    other 2023年6月26日
    00
  • Java进阶教程之String类

    Java进阶教程之String类完整攻略 1. String类简介 String类是Java中的一个常用类,用于处理字符串操作。它的实现方式采用了不可变的字符序列,即一旦String对象被创建后,它的值就不能被修改。由于字符串类型的变量在Java中非常常见,因此学习String类的使用具有重要意义。 2. String类的常用方法 length()方法 该方…

    other 2023年6月20日
    00
  • Coding.net简单使用指南

    Coding.net简单使用指南 Coding.net是一款为程序员提供协作开发平台的工具,可以协助开发者管理代码、实现协作、进行项目开发。本文将详细介绍Coding.net的使用方法。 注册 使用Coding.net之前,需要注册一个账户。请在Coding.net官网上注册您的账户,并导航到主页。 创建项目 登录后,您可以在主页上创建新项目。单击“创建新项…

    其他 2023年3月28日
    00
  • 关于c++:错误:标识符“cout”未定义。

    在C++中,如果您在程序中使用cout,但未包含必要的头文件,则会出现“错误:标识符’cout’未定义”的错误。在本攻略,我们将详细讲解如何解决此,并提供两个示例说明。 包含头文件 解决“错误:标识符’cout’未定义”的错误,我们需要包含iostream头文件。该头文件包含了cout和cin等标准输入输出流对象的定义。以下是一个示例,演示了如包含iostr…

    other 2023年5月9日
    00
  • RedisTemplate中opsForValue和opsForList方法的使用详解

    下面我就来详细讲解一下RedisTemplate中opsForValue和opsForList方法的使用详解。 一、RedisTemplate在Spring Boot中的使用 RedisTemplate是Spring Data Redis提供的redis客户端操作工具类,它封装了redis的操作,同时提供了对对象的序列化和反序列化。 在Spring Boot…

    other 2023年6月25日
    00
  • webpack 4 简单介绍

    Webpack 4 简单介绍 Webpack是一个现代化的JavaScript应用程序的静态模块打包器。它将多个模块打包成一个或多个bundle,以便在浏览器中加载。Webpack 4是Webpack的最新版本,它提供了更好的性能和更好的开发体验。本文将简单介绍Webpack 4的基本概念、使用方法和示例说明。 Webpack 4的基本概念 Webpack …

    other 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部