以下提供一个示例来说明如何在 WinForms 中实现分页功能,并在分页中实现数据修改并保存的操作。

首先,我们需要一个包含数据源的 DataGridView 控件,并添加上一页、下一页等操作控件来实现分页功能。

接下来,我们需要实现数据的加载、分页、修改和保存功能。

这里我将提供一个简单的例子:

using System;
using System.Data;
using System.Windows.Forms; namespace DataGridViewPagination
{
public partial class Form1 : Form
{
private DataTable originalDataTable; // 原始数据表
private DataTable currentPageDataTable; // 当前页数据表
private int pageSize = 10; // 每页显示的数据条数
private int currentPageIndex = 1; // 当前页索引 public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
// 模拟加载数据
LoadData(); // 显示第一页数据
ShowData();
} private void LoadData()
{
// 模拟加载数据源
originalDataTable = new DataTable();
originalDataTable.Columns.Add("ID", typeof(int));
originalDataTable.Columns.Add("Name", typeof(string)); // 添加一些示例数据
for (int i = 1; i <= 100; i++)
{
originalDataTable.Rows.Add(i, "Name " + i);
}
} private void ShowData()
{
// 计算起始索引和结束索引
int startIndex = (currentPageIndex - 1) * pageSize;
int endIndex = Math.Min(startIndex + pageSize - 1, originalDataTable.Rows.Count - 1); // 创建一个新的数据表,用于存储当前页的数据
currentPageDataTable = originalDataTable.Clone(); // 填充新的数据表
for (int i = startIndex; i <= endIndex; i++)
{
currentPageDataTable.ImportRow(originalDataTable.Rows[i]);
} // 将新的数据表绑定到 DataGridView 控件
dataGridView1.DataSource = currentPageDataTable; // 更新分页信息
labelPageInfo.Text = $"Page {currentPageIndex}/{GetTotalPages()}, Records {startIndex + 1}-{endIndex + 1} of {originalDataTable.Rows.Count}";
} private int GetTotalPages()
{
// 计算总页数
return (int)Math.Ceiling((double)originalDataTable.Rows.Count / pageSize);
} private void btnPrevious_Click(object sender, EventArgs e)
{
// 显示上一页数据
if (currentPageIndex > 1)
{
currentPageIndex--;
ShowData();
}
} private void btnNext_Click(object sender, EventArgs e)
{
// 显示下一页数据
if (currentPageIndex < GetTotalPages())
{
currentPageIndex++;
ShowData();
}
} private void btnSave_Click(object sender, EventArgs e)
{
// 保存修改
SaveChanges();
} private void SaveChanges()
{
// 确保DataGridView绑定了数据源
if (dataGridView1.DataSource == null || !(dataGridView1.DataSource is DataTable))
{
return;
} // 获取当前页的数据表
DataTable pageDataTable = (DataTable)dataGridView1.DataSource; // 将修改后的数据保存到原始数据表中
foreach (DataRow row in pageDataTable.Rows)
{
DataRow originalRow = originalDataTable.Rows.Find(row["ID"]); // 假设有一个唯一标识为ID的列
if (originalRow != null)
{
originalRow.ItemArray = row.ItemArray;
}
} // 提示保存成功或执行其他保存操作
MessageBox.Show("Changes saved successfully."); // 重新加载数据,刷新当前页的DataGridView
ShowData();
}
}
}

在这个例子中,我们创建了一个包含 ID 和 Name 列的 DataTable 作为数据源,然后在 Form_Load 事件中加载数据,并在 ShowData 方法中实现了分页功能。上一页和下一页按钮分别触发了 btnPrevious_Click 和 btnNext_Click 事件来切换页码并显示相应的数据。保存按钮则触发了 btnSave_Click 事件来保存修改后的数据。

在 SaveChanges 方法中,我们遍历了当前页的数据表,将修改后的数据保存到原始数据表中,并重新加载数据来刷新当前页的 DataGridView。

这个例子是一个简单的实现,实际应用中你可能需要根据具体需求进行调整和扩展。

winform控件 datagridview分页功能 界面实现需要有上一页下一页等操作控件 dataGridView1 控件的数据绑定方式 如何实现分页中的数据修改然后进行保存 请列出详细例子 特别保存部分的更多相关文章

  1. ThinkPHP 自动创建数据、自动验证、自动完成详细例子介绍(十九)

    原文:ThinkPHP 自动创建数据.自动验证.自动完成详细例子介绍(十九) 1:自动创建数据 //$name=$_POST['name']; //$password=$_POST['password ...

  2. Unity上一页下一页切换功能实现源码(仅供参考)

    在做项目时我们有时需要实现切换上一页下一页图片,切换上一首下一首歌曲等等类似的功能.这里写了个简单的实现源码(仅供参考),要是有更好的方法欢迎提出来,共同进步~ 以切换上一页下一页图片为例: usin ...

  3. C# Winform学习---MDI窗体的设计,PictureBox控件(图片上一页下一页),Timer控件,MenuStrip控件

    一.MDI窗体的设计 1.MDI简介 MDI(Multiple Document Interface)就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下 ...

  4. Django--实现分页功能,并且基于cookie实现用户定制每页的数据条数

    # page_num 当前页数, total_result_num 总共有多少条测试结果 def pagination(request, page_num, total_result_num, res ...

  5. Arduino 极速入门系列 - 光控灯(2) - 关于开关,上拉、下拉电阻那些事

    接上篇,这次继续讲解光控灯的另外两个组成部分 - 开关和光敏电阻,光控灯里面将会有自锁开关按钮和光敏电阻.这此主要给新玩电子的朋友解释一下开关按钮的做法. 开关按钮的引脚电平读取问题 - 新手专用 我 ...

  6. jsp实现上一页下一页翻页功能

    前段时间一直忙于期末考试和找实习,好久没写博客了. 这段时间做了个小项目,包含了翻页和富文本编辑器Ueditor的两个知识点,Ueditor玩的还不是很深,打算玩深后再写篇博客. 要实现翻页功能,只需 ...

  7. DEDEcms手机网站添加详情内页上一页/下一页的翻页功能

    修改文件include/arc.archives.class.php文件. 1.搜索 function GetPreNext($gtype='') 2.将这个函数的所有内容替换为 function G ...

  8. 六、js创建页码器:分页、上一页下一页、省略页码

    表格数据太多,需要做成分页.因此需要写一个页码器. 1,初始化页码 获取数据之后渲染页码器,页码器初始化,小于6页的全部展示,否则展示前四页,后面是省略号,最后展示尾页.默认选中第一页,禁用前一页的箭 ...

  9. GridView利用PagerTemplate做分页显示设置上一页下一页转到下拉转页

    效果如图: 代码如下: aspx页: <asp:GridView ID="GridViewMain" runat="server" OnPageIndex ...

  10. css -- 映像 ,分页(上一页下一页)

    1.映像:-webkit-box-reflect:blow 2px -webkit-gradient( linear, left top, left bottom, from(transparent) ...

随机推荐

  1. 尝试新的 System.Text.Json 源生成器

    尝试新的 System.Text.Json 源生成器 在 .NET 6.0 的预览版中,我们使用 System.Text.Json 发布了一个新的 C# source generator 来帮助改进应 ...

  2. 中电金信通过KCSP认证 云原生能力获权威认可

    ​ 中电金信通过KCSP(Kubernetes Certified Service Provider)认证,正式成为CNCF(云原生计算基金会)官方认证的 Kubernetes 服务提供商. ​ Ku ...

  3. django模型层(orm相关知识点)

    目录 一.模型层之前期准备 模型层的了解 模型 模型层的前置知识点 二.ORM常用关键字 三.ORM执行SQL语句 四.神奇的双下划线查询 五.ORM外键字段的创建 复习MySQL外键关系 外键字段的 ...

  4. Qt/C++编写网络摄像头推流(4路1080P主码流只占用0.2%CPU/极低延时极速响应)

    一.前言说明 将从网络摄像头拉流过来的视频流重新推流出去,是目前一个很常规的做法,尤其是推流到流媒体服务中心,这样流媒体服务中心就把散落在各个区域的监控摄像头集中起来统一管理,同时提供对外一致的访问接 ...

  5. Qt编写地图综合应用24-miniblink内核

    一.前言 用Qt做项目过程中,遇到需要用到浏览器控件的项目,可能都会绕不开一个问题,那就是从Qt5.6版本开始mingw编译器的Qt构建套件,不再提供浏览器控件了,之前还可以用webkit控件,这下很 ...

  6. 即时通讯安全篇(十一):IM聊天系统安全手段之传输内容端到端加密技术

    本文由融云技术团队分享,原题"互联网通信安全之端到端加密技术",内容有较多修订和改动. 1.引言 在上篇<IM聊天系统安全手段之通信连接层加密技术>中,分享了关于通信连 ...

  7. 重温Go语法笔记 | 函数

    函数 返回值带有变量名 return时可以不写返回值,在返回值位置声明即可 func namedRetvalue() (a, b int) { a = 1 b = 2 return } 匿名函数 定义 ...

  8. 基于STC8G1K08的CH549单键进入USB下载模式实验

    一.实验原因 CH552或CH549进入USB下载,通常需要两个按键,一个控制电源的通断,一个通过串联电阻(一头接VCC或V33)冷启动时抬高UDP电平.时序上是这样的:断电--按下接UDP的轻触开关 ...

  9. 关于vue加element-ui上传文件获取文件的sha256的值

    首先使用element的上传文件的组件 安装依赖crypto-js npm i crypto-js <el-upload class="upload-demo" drag : ...

  10. 2024年终总结:5000 Star,10w 下载量,这是我交出的开源答卷

    你好,我是 Kagol,个人公众号:前端开源星球. 2024年,我做前端开发工作满10年啦! 这10年我一直在开发前线,做过电商项目.广告平台.项目管理系统等业务,目前主要专注于前端组件库建设和开源社 ...