winform控件 datagridview分页功能 界面实现需要有上一页下一页等操作控件 dataGridView1 控件的数据绑定方式 如何实现分页中的数据修改然后进行保存 请列出详细例子 特别保存部分
以下提供一个示例来说明如何在 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 控件的数据绑定方式 如何实现分页中的数据修改然后进行保存 请列出详细例子 特别保存部分的更多相关文章
- ThinkPHP 自动创建数据、自动验证、自动完成详细例子介绍(十九)
原文:ThinkPHP 自动创建数据.自动验证.自动完成详细例子介绍(十九) 1:自动创建数据 //$name=$_POST['name']; //$password=$_POST['password ...
- Unity上一页下一页切换功能实现源码(仅供参考)
在做项目时我们有时需要实现切换上一页下一页图片,切换上一首下一首歌曲等等类似的功能.这里写了个简单的实现源码(仅供参考),要是有更好的方法欢迎提出来,共同进步~ 以切换上一页下一页图片为例: usin ...
- C# Winform学习---MDI窗体的设计,PictureBox控件(图片上一页下一页),Timer控件,MenuStrip控件
一.MDI窗体的设计 1.MDI简介 MDI(Multiple Document Interface)就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下 ...
- Django--实现分页功能,并且基于cookie实现用户定制每页的数据条数
# page_num 当前页数, total_result_num 总共有多少条测试结果 def pagination(request, page_num, total_result_num, res ...
- Arduino 极速入门系列 - 光控灯(2) - 关于开关,上拉、下拉电阻那些事
接上篇,这次继续讲解光控灯的另外两个组成部分 - 开关和光敏电阻,光控灯里面将会有自锁开关按钮和光敏电阻.这此主要给新玩电子的朋友解释一下开关按钮的做法. 开关按钮的引脚电平读取问题 - 新手专用 我 ...
- jsp实现上一页下一页翻页功能
前段时间一直忙于期末考试和找实习,好久没写博客了. 这段时间做了个小项目,包含了翻页和富文本编辑器Ueditor的两个知识点,Ueditor玩的还不是很深,打算玩深后再写篇博客. 要实现翻页功能,只需 ...
- DEDEcms手机网站添加详情内页上一页/下一页的翻页功能
修改文件include/arc.archives.class.php文件. 1.搜索 function GetPreNext($gtype='') 2.将这个函数的所有内容替换为 function G ...
- 六、js创建页码器:分页、上一页下一页、省略页码
表格数据太多,需要做成分页.因此需要写一个页码器. 1,初始化页码 获取数据之后渲染页码器,页码器初始化,小于6页的全部展示,否则展示前四页,后面是省略号,最后展示尾页.默认选中第一页,禁用前一页的箭 ...
- GridView利用PagerTemplate做分页显示设置上一页下一页转到下拉转页
效果如图: 代码如下: aspx页: <asp:GridView ID="GridViewMain" runat="server" OnPageIndex ...
- css -- 映像 ,分页(上一页下一页)
1.映像:-webkit-box-reflect:blow 2px -webkit-gradient( linear, left top, left bottom, from(transparent) ...
随机推荐
- C#获得本地IP地址的各种方法
网上有很多种方法可以获取到本地的IP地址.一线常用的有这么些: 枚举本地网卡 using System.Net.NetworkInformation; using System.Net.Sockets ...
- 虚拟机搭建FISCO BCOS的区块链浏览器
一键搭建 注:根据官方文档搭建,大部分与官方文档相似.我自己修改了部分代码,并对部分报错进行了解决这次使用的是一键搭建,适合前后端同机部署,快速体验的情况使用 具体安装步骤 依赖环境 环境 版本 Ja ...
- java - Powermock-Failed to transform class with name...ArrayIndexOutOfBoundsException: 3
I'm trying to run a junit test. i'm using: junit 4.10,easymock 3.0,powermock-core 1.4.10 (uses javas ...
- 2024 Nuxt3 年度生态总结
hello,大家好,我是程序员海军.很荣幸能与大家分享我今年的第三篇文章.在过去的一年里,我深入探索了Nuxt3,并在多个项目中实际应用了这一前沿框架,从而对其功能和应用有了全面而深刻的理解.今天,我 ...
- Qt数据库应用2-数据导出到xls
一.前言 导入导出数据到csv由于语法简单,适用场景有限,于是乎还是必须再造一个轮子导出数据到xls,在经历过数十年的项目实战经验中不断调整和优化.尤其记得当初第一个版本v0.01大概在2011年左右 ...
- Qt5离线安装包无法下载问题解决办法
1.前言 Qt5离线安装包目前在国内已经被墙了,无法下载,只能下载在线安装包: 直接访问会显示Download from your IP address is not allowed: 本文就提出两种 ...
- 如何在cmake中添加lib库
如何在cmake中添加lib库: 生成lib文件 libhello.a add_library(hello hello.cxx) # 在top level添加子目录 add_subdirectory( ...
- 认识Token和Cookie
认识Token和Cookie 1.token和cookie有什么区别? 1.1 存储位置及方式:Cookie是浏览器用来存储本地信息的文件,有一定的存储限制,而Token是由服务器按一定算法生成的 ...
- 正在测试和完善的CH552(CH549)USB下载之单按键带入电路实验
一.设计理由 CH552或CH549进入USB下载,通常需要两个按键,一个控制电源的通断,一个通过串联电阻(一头接VCC或V33)冷启动时抬高UDP电平.时序上是这样的:断电--按下接UDP的轻触开关 ...
- [rustGUI][iced]基于rust的GUI库iced(0.13)的部件学习(00):iced简单窗口的实现以及在窗口显示中文
前言 本文是关于iced库的部件介绍,iced库是基于rust的GUI库,作者自述是受Elm启发. iced目前的版本是0.13.1,相较于此前的0.12版本,有较大改动. 本合集是基于新版本的关于分 ...