Winform/Sunny.UI的DataGridView数据展示、uiPagination分页
一准备1数据库CREATE DATABASE lwq; --创建数据库 USE lwq; --使用数据库 --创建表 CREATE TABLE diviceinfo ( id INT IDENTITY(1,1) NOT NULL, -- 主键 diviceName NVARCHAR(100) NOT NULL, -- 设备名称 status TINYINT NOT NULL, -- 设备状态(0:运行,1故障,2:待机,3:维修中) location NVARCHAR(200) NULL, -- 设置位置 manufacturer NVARCHAR(100) NULL, -- 制造商 purchaseDate DATETIME NULL, -- 购买日期 diviceTypeId INT NOT NULL, -- 设备类型Id CONSTRAINT PK_diviceinfo PRIMARY KEY CLUSTERED (id) );2框架搭建框架MODEL、DAL、BLL、UI如图。右键解决方案点击添加新建项目选择类库命名为MODEL、DAL、BLL然后右键解决方案点击添加新建项目选择Windows窗体应用命名为UI。3控件3.1安装依赖包右键点击UI选择NuGet包安装Sunny.UI包3.2控件布局在UI里面自带的Form1里面选择控件uiDataGridView数据展示、uiPagination分页控件。点击uiDataGridView控件右上角的三角形。1.选择添加列并且设置页眉文本为数据库对应的列名这只是一个文本展示随意取但是为了方便辨认使用与数据库字段对应的列名编号、名称、状态、位置、厂商、日期、类型2.选择编辑列将所有列的DataPropertyName改为对应英文同理随意但是需要与后面的model属性相同。二Model在MODEL里面添加类namespace MODEL { public class DiviceInfoMODEL { public int ID { get; set; } public string diviceName { get; set; } public int status { get; set; } public string location { get; set; } public string manufacturer { get; set; } public DateTime purchaseDate { get; set; } public int diviceTypeId { get; set; } } }三DAL在DAL里面添加类里面需要进行两个方法的编写:获取所有数据、获取所有数据数量using MODEL; using UTIL; namespace DAL { public class DiviceInfoDAL { //获取数据 public ListDiviceInfoMODEL GetDiviceInfo(int Page,int PageSize ) { DAO d new DAO(); try { ListDiviceInfoMODEL diviceInfoMODELs new ListDiviceInfoMODEL(); string sql $select * from diviceinfo order by ID offset {(Page - 1) * PageSize} rows fetch next {PageSize} rows only; SqlDataReader r d.query(sql); while (r.Read()) { diviceInfoMODELs.Add(new DiviceInfoMODEL { //一定判断是否存在数据库内容为nullDBnull ID r[0] DBNull.Value ? 0 : Convert.ToInt32(r[0]), diviceName r[1] DBNull.Value ? : r[1].ToString(), status r[2] DBNull.Value ? 0 : Convert.ToInt32(r[2]), location r[3] DBNull.Value ? 没有 : r[3].ToString(), manufacturer r[4] DBNull.Value ? 没有 : r[4].ToString(), purchaseDate r[5] DBNull.Value ? DateTime.Now : Convert.ToDateTime(r[5]), diviceTypeId r[6] DBNull.Value ? 0 : Convert.ToInt32(r[6]) }); } return diviceInfoMODELs; } catch (Exception e) { Console.WriteLine(e.Message); return new ListDiviceInfoMODEL(); } finally { d.close(); } } //获取总数 public int GetDiviceCount() { DAO d new DAO(); try { string sql select count(*) from diviceinfo; SqlDataReader r d.query(sql); if (r.Read()) { return Convert.ToInt32(r[0]); } return 0; } catch (Exception e) { Console.WriteLine(e.Message); return 0; } finally { d.close(); } } } }四BLL在BLL里面添加类里面也有两个方法对应DALusing DAL; using MODEL; using UTIL; namespace BLL { public class DiviceInfoBLL { private DiviceInfoDAL divicedal new DiviceInfoDAL(); //获取数据 public ListDiviceInfoMODEL GetDiviceInfo(int Page, int PageSize) { return divicedal.GetDiviceInfo(Page, PageSize); } //获取总数 public int GetDiviceCount() { return divicedal.GetDiviceCount(); } } }五UI双击Form1.cs设计的uiPagination控件进入UI界面代码编写using BLL; using MODEL; using Sunny.UI; namespace UI { public partial class Form1 : UIForm { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } //在设计页面属性选择事件选择shown表示页面加载完成后执行 private void Form1_Shown(object sender, EventArgs e) { GetDiviceInfo(); } //获取diviceinfo所有消息 private DiviceInfoBLL divicebll new DiviceInfoBLL(); private int Page 1; private int PageSize 3; private int Total 0; public void GetDiviceInfo() { ListDiviceInfoMODEL d divicebll.GetDiviceInfo(Page, PageSize); Total divicebll.GetDiviceCount(); uiDataGridView1.AutoGenerateColumns false;//确保不会自动生成列名 uiPagination1.PageSize PageSize;//初始化分页控件的每页数量 uiPagination1.TotalCount Total;//初始化分页控件的总数 //页数等于总数除每页数量所以不需要初始化 uiDataGridView1.DataSource null;//首先清空数据防止刷新导致数据堆积 uiDataGridView1.DataSource d;//加入数据 } private void uiPagination1_PageChanged(object sender, object pagingSource, int pageIndex, int count) { int newpage uiPagination1.ActivePage; Page newpage; GetDiviceInfo(); } } }六易错点1.MODEL的属性与uidatagridview的列属性datapropettyname不一致导致数据无法映射2.uidatagridview没禁止自动添加列导致列翻倍。uiDataGridView1.AutoGenerateColumns false3.没有初始化分页控件导致虽然数据成功展示但是显示了总共有50页数据。4.DAl里面应该判断数据是否等于DBNULL.VALUE然后使用三元运算符进行数据选择否者会导致数据没有添加5.每个类库、windows窗体应用间互相引用时using MODEL...需要右键项目的引用点击添加引用选择需要的项目。

相关新闻

第08篇-Workspace与上下文文件

第08篇-Workspace与上下文文件

【OpenClaw 从入门到精通】第 8 篇:Workspace 与上下文文件 本系列定位:零基础入门,从安装配置到高级架构全覆盖。无论你是开发者、运维工程师、还是技术爱好者,本系列带你彻底掌握 OpenClaw。 本篇你将学到 Workspace 概念与目录…

2026/8/26 17:34:07 阅读更多 →
第10篇-通道架构与Telegram配置

第10篇-通道架构与Telegram配置

【OpenClaw 从入门到精通】第 10 篇:通道架构概览与 Telegram 配置 本系列定位:零基础入门,从安装配置到高级架构全覆盖。无论你是开发者、运维工程师、还是技术爱好者,本系列带你彻底掌握 OpenClaw。 本篇你将学到 OpenClaw 25 …

2026/8/26 17:34:07 阅读更多 →
把浏览器搬进 Agent 沙箱:Lexmount 在 CubeSandbox 上的一线实战

把浏览器搬进 Agent 沙箱:Lexmount 在 CubeSandbox 上的一线实战

作者|Lexmount 揽岳智能全栈工程师 熊袖璋编者按| Agent 浏览器运行时是一个"复合工作负载"。它对AI Agent沙箱的运行有四个核心层面的硬需求:出站网络能否连到真实互联网、批量拉起时的启动时序稳不稳、每个沙箱的运行时状态能否…

2026/8/26 17:33:06 阅读更多 →

最新新闻

Ornith-1.5 自我改进范式深度剖析:任务生成、脚手架与 Rollout 联合强化学习如何炼出 397B 旗舰

Ornith-1.5 自我改进范式深度剖析:任务生成、脚手架与 Rollout 联合强化学习如何炼出 397B 旗舰

Ornith-1.5 自我改进范式深度剖析:任务生成、脚手架与 Rollout 联合强化学习如何炼出 397B 旗舰 【免费下载链接】Ornith-1.5-397B 项目地址: https://ai.gitcode.com/hf_mirrors/ornith-ai/Ornith-1.5-397B Ornith-1.5-397B 是 ornith-ai 团队推出的自我改…

2026/8/26 20:00:44 阅读更多 →
让AI写代码做数据分析:Superflows数据洞察与自动绘图功能揭秘

让AI写代码做数据分析:Superflows数据洞察与自动绘图功能揭秘

让AI写代码做数据分析:Superflows数据洞察与自动绘图功能揭秘 【免费下载链接】superflows Open-source toolkit to build an AI copilot for SaaS products 项目地址: https://gitcode.com/gh_mirrors/su/superflows Superflows 是一个开源的 AI 副驾驶&…

2026/8/26 20:00:44 阅读更多 →
数据库链路追踪深度实践:如何为SQL Server和Entity Framework Core启用opentelemetry-dotnet-contrib遥测

数据库链路追踪深度实践:如何为SQL Server和Entity Framework Core启用opentelemetry-dotnet-contrib遥测

数据库链路追踪深度实践:如何为SQL Server和Entity Framework Core启用opentelemetry-dotnet-contrib遥测 【免费下载链接】opentelemetry-dotnet-contrib This repository contains set of components extending functionality of the OpenTelemetry .NET SDK. Ins…

2026/8/26 20:00:44 阅读更多 →
item重排也要丝滑动画?三步开启SpannedGridLayoutManager的流畅过渡效果

item重排也要丝滑动画?三步开启SpannedGridLayoutManager的流畅过渡效果

item重排也要丝滑动画?三步开启SpannedGridLayoutManager的流畅过渡效果 【免费下载链接】SpannedGridLayoutManager Android RecyclerView.LayoutManager that resizes and reorders views based on SpanSize 项目地址: https://gitcode.com/gh_mirrors/sp/Spann…

2026/8/26 20:00:44 阅读更多 →
基于SpringBoot+Vue 2的高校失物招领系统的设计与实现

基于SpringBoot+Vue 2的高校失物招领系统的设计与实现

文章目录项目介绍技术栈功能介绍实现页面截图一、项目背景与需求分析二、系统架构与技术选型技术选型对比三、核心功能模块实现1)失物招领列表查询2)用户登录与注册3)真实问题排查:登录态导致普通用户可见范围不稳定4)…

2026/8/26 20:00:44 阅读更多 →
TransT开发者指南:ltr、pytracking、util三大模块目录结构与核心API完整速查

TransT开发者指南:ltr、pytracking、util三大模块目录结构与核心API完整速查

TransT开发者指南:ltr、pytracking、util三大模块目录结构与核心API完整速查 【免费下载链接】TransT Transformer Tracking (CVPR2021) 项目地址: https://gitcode.com/gh_mirrors/tr/TransT TransT(Transformer Tracking,CVPR 2021…

2026/8/26 19:59:43 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →