winform分页控件 附源码下载

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日

相关文章

  • 主机黑屏重启 然后找不到硬盘

    当主机出现黑屏、重启的情况并且找不到硬盘,通常是硬件故障或者操作系统的问题。以下给出一些解决方案供参考。 硬件故障 如果主机重启后无法找到硬盘,首先要确认硬件方面是否出现故障。可以按照以下方法进行排查: 检查电源供电是否正常。可以尝试更换电源或者使用电压表测试电源输出是否正常。 打开主机外壳,清洁内部灰尘,检查硬件连接是否正常。特别是硬盘驱动器和电源连接是否…

    other 2023年6月27日
    00
  • Spring超详细讲解创建BeanDefinition流程

    Spring超详细讲解创建BeanDefinition流程 在Spring框架中,BeanDefinition是用于描述和定义一个Bean的元数据信息的对象。它包含了Bean的类名、作用域、依赖关系等信息。本攻略将详细讲解Spring创建BeanDefinition的流程。 1. 创建BeanDefinition对象 首先,我们需要创建一个BeanDefin…

    other 2023年10月15日
    00
  • 关于c#:可空对象必须具有一个值

    在C#中,可空对象必须具有一个值。如果您定义了一个可空对象,您必须在使用它之前为其分配一个值。否则,您将收到一个“System.InvalidOperationException: Nullable object must have a value”异常。在本攻略中,我们将介绍如何解决这个问题。 解决方法 要解决“Nullable object must h…

    other 2023年5月9日
    00
  • C++深入刨析类与对象的使用

    C++深入刨析类与对象的使用 什么是类与对象 在 C++ 中,类是对一类事物的抽象描述。类是一个代码模板,它描述了包含在对象中的属性和方法。而对象是类的一个实例。 比如,我们可以定义一个实体类 Person 来描述人的属性和方法,然后我们可以用实例化出来的对象来表示不同的人。比如有人叫张三,有人叫李四,那么我们可以将张三和李四看作是 Person 类的两个对…

    other 2023年6月26日
    00
  • Shell脚本中$符号的嵌套使用方法小结

    Shell脚本中$符号的嵌套使用方法小结 在Shell脚本中,$符号是一个非常重要的特殊字符,用于引用变量的值。除了直接使用$变量名来引用变量的值外,$符号还可以嵌套使用,以实现更复杂的功能。下面是关于$符号嵌套使用的一些常见方法和示例说明。 1. 变量替换 使用$符号嵌套可以在字符串中进行变量替换。具体来说,可以使用${变量名}的形式来引用变量,并在变量名…

    other 2023年7月27日
    00
  • python爬虫万能代码-最精简的爬虫

    以下是“python爬虫万能代码-最精简的爬虫”的完整攻略: 1. 导入必要的库 首先,我们需要导入必要的库。这个例子中,我们需要使用requests库和BeautifulSoup库。可以使用以下代码导入这些库: import requests from bs4 import BeautifulSoup 2. 发送请求并解析HTML 接下来,我们需要发送请求…

    other 2023年5月7日
    00
  • Wine更新3.5开发者版本:持RSA和ECDSA加密密钥(附下载地址)

    Wine更新3.5开发者版本: 持RSA和ECDSA加密密钥 最近,Wine开发者发布了Wine 3.5的更新版本,其中包含了新的加密算法,支持使用RSA和ECDSA加密密钥。这些算法的添加使得Wine更加安全和可靠,特别是对于那些需要与远程服务器通信的应用程序。 下载和安装Wine 3.5更新版本 要下载Wine 3.5更新版本,首先需要访问Wine官方网…

    other 2023年6月26日
    00
  • docker管理面板-urlos(易用、高效、强大)

    当然,我很乐意为您提供有关“Docker管理面板-urlos”的完整攻略。以下是详细的步骤和两个示例: 1 Docker管理面板-urlos urlos是一个易用、高效、强大的Docker管理面板,它可以帮助您轻松管理Docker容器、镜像和网络。以下是使用urlos的步骤: 1.1 安装urlos 首先,您需要安装urlos。您可以使用以下命令在Docke…

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