C#高级:Winform桌面开发中DataGridView的详解

一、每条数据增加一个按钮,点击输出对应实体

请先确保正确添加实体的名称和文本:

private void button6_Click(object sender, EventArgs e)
{//SQL查询到数据,存于list中List<InforMessage> list = bll.QueryInforMessage();//含有字段:ID Title PublishTime UserName Content// 清空现有数据dataGridView1.Rows.Clear();//添加数据foreach (var item in list){//绑定数据,注意你的不一定是dataGridView1,列表没有ID不要写下去,ID也会一起打包到Tagint rowIndex = dataGridView1.Rows.Add();dataGridView1.Rows[rowIndex].Cells["Title"].Value = item.Title;dataGridView1.Rows[rowIndex].Cells["PublishTime"].Value = item.PublishTime;dataGridView1.Rows[rowIndex].Cells["UserName"].Value = item.UserName;dataGridView1.Rows[rowIndex].Cells["Content"].Value = "点击查看";//按钮名称// 将数据实体关联到行的 Tag 属性上以便后续处理dataGridView1.Rows[rowIndex].Tag = item;}
}// 在 DataGridView 的 CellContentClick (点击某一单元格)事件中处理内容按钮点击事件
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{if (e.ColumnIndex == dataGridView1.Columns["Content"].Index && e.RowIndex >= 0)//若点击了标签为【Content】列的按钮{// 获取当前行对应的实体对象【注意修改此处InforMessage类】,此处能获取到ID(虽然没有显示在界面上,但也绑定到Tag了)var item = dataGridView1.Rows[e.RowIndex].Tag as InforMessage;//将list实体中的content展示出来if (item != null){MessageBox.Show(item.Content, "内容详情");}}
}

 二、输出选中的实体信息

【代码如下】

 private void Form1_Load(object sender, EventArgs e){//sql查表List<Student> list = bll.QueryStudent();// 清空现有数据dataGridView1.Rows.Clear();//添加数据foreach (var item in list){int rowIndex = dataGridView1.Rows.Add();dataGridView1.Rows[rowIndex].Cells["ID"].Value = item.ID;dataGridView1.Rows[rowIndex].Cells["Name"].Value = item.Name;dataGridView1.Rows[rowIndex].Tag = item;}}private void button1_Click(object sender, EventArgs e)//点击触发{//获取选中的实体(在窗体上定义好了)var result = selectedStudent;}private void dataGridView1_SelectionChanged(object sender, EventArgs e)//选中触发{if (dataGridView1.SelectedRows.Count > 0){DataGridViewRow selectedRow = dataGridView1.SelectedRows[0];selectedStudent = (Student)selectedRow.Tag;//获取选中的实体}else{selectedStudent = null;}}

 三、小结

1.增:  建议用textbox、combobox等工具增,而不是直接datagridview新增,一来麻烦,二来输入工具不能多样化。

2.删:建议如标题一,每条数据加一个删除按钮,方便操作

3.改:建议如标题二,选中某条数据然后将数据信息转移到textbox上,label显示“您已选中xxx数据”,然后点击button去修改相应信息(选中数据和点击按钮都能获取到对应实体)

4.查:同第2条

5.如果单纯用datagridview作增删查改,虽然能实现,但是代码复杂难以维护,而且输入条件单一,容易操作失误,不建议这么做。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/269700.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xss.haozi:0x00

0x00没有什么过滤所以怎么写都没有关系有很多解 <script>alert(1)</script>

Java基于微信小程序的4S店汽车保养小程序

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

Ubuntu下安装Scala

前言 弄了一下终于成功装上了&#xff0c;这里对此进行一下总结 安装虚拟机 VMware虚拟机安装Ubuntu&#xff08;超详细图文教程&#xff09;_vmware安装ubuntu-CSDN博客https://blog.csdn.net/qq_43374681/article/details/129248167Download Ubuntu Desktop | Download | …

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:图片边框设置)

设置容器组件的图片边框样式。 说明&#xff1a; 从API Version 9开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 borderImage borderImage(value: BorderImageOption) 设置组件的图片边框。 卡片能力&#xff1a; 从API version 9开始…

2024年软考-官方最新考试安排出来了,软考新调整,很重要,但也很惹人气愤

官方最新通知&#xff0c;关于2024年度计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试工作计划 笔试改机考后&#xff0c;必然会迎来调整&#xff0c;但有点让人费解。 这次调整变动主要是每年考试的次数调整&#xff0c;很多改为了一年一考&#xff0c;具体…

android开发框架qmui,View的这些基础知识你必须要知道

今天在浏览技术新闻的时候&#xff0c;发现腾讯就在今天开源了一套 Android 原生的 UI 框架。你们有没有发现&#xff0c;腾讯特别喜欢干这种事&#xff0c;哪一种事呢&#xff1f;喜欢开源 UI 框架&#xff0c;小程序也是这样的。 我看到这个新闻后&#xff0c;第一时间就下载…

kohya_ss, stable diffusion 显示MaxRetryError: HTTPSConnectionPool()的解决方法

说白了就是访问huggingface.co下载模型、json配置失败&#xff0c;需要挂梯子。 然而有时候明明开了梯子&#xff0c;网页端可以访问google、huggingface.co却依然报上述错。 这时候说明没有开代理&#xff0c;执行的脚本没有连接上梯子对应的端口。 解决办法&#xff1a;手…

稀碎从零算法笔记Day7-LeetCode:罗马数字转整数

题型&#xff1a;字符串转化、找规律 链接&#xff1a;13. 罗马数字转整数 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 …

工具函数模板题(蓝桥杯 C++ 代码 注解)

目录 一、Vector容器&#xff1a; 二、Queue队列 三、Map映射 四、题目&#xff08;快递分拣 vector&#xff09;&#xff1a; 代码&#xff1a; 五、题目&#xff08;CLZ银行问题 queue&#xff09;&#xff1a; 代码&#xff1a; 六、题目&#xff08;费里的语言 map&…

索引下推 INDEX CONDITION PUSHDOWN

索引下推 (INDEX CONDITION PUSHDOWN&#xff0c;简称ICP)是在 MySQL5.6 针对扫描索引下推二级索引的一项优化改进。 用来在范围查询时减少回表的次数。ICP适用于 MYISAM和INNODB.

二手手机管理系统|基于Springboot的二手手机管理系统设计与实现(源码+数据库+文档)

二手手机管理系统目录 目录 基于Springboot的二手手机管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户管理功能的实现界面 2、用户中心管理功能的实现界面 3、新闻信息管理功能的实现界面 4、商品收藏管理功能的实现界面 5、订单管理功能的实现界…

WordPress免费的远程图片本地化下载插件nicen-localize-image

nicen-localize-image&#xff08;可在wordpress插件市场搜索下载&#xff09;&#xff0c;是一款用于本地化文章外部图片的插件&#xff0c;支持如下功能&#xff1a; 文章发布前通过编辑器插件本地化 文章手动发布时自动本地化 文章定时发布时自动本地化 针对已发布的文章…

图书推荐|Word文稿之美

让你的文档从平凡到出众&#xff01; 本书内容 《Word文稿之美》是一本全面介绍Word排版技巧和应用的实用指南。从初步认识数字排版到高效利用模板、图文配置和表格与图表的排版技巧&#xff0c;再到快速修正错误和保护文件&#xff0c;全面系统地讲解数字排版的技术和能力&…

idea内置的database和chat2DB如何?

捉妖啦 最近由于某些众所周知的因素&#xff0c;要求卸载navicat,所以寻找替代品是当下任务。如果知识MySQL数据库的话&#xff0c;那替代品可太多了&#xff0c;由于使用的是MongoDB&#xff0c;所以至今没有找到一个称手的工具。 需要一款像Navicat一样&#xff0c;可以直…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:点击回弹效果)

设置组件点击时回弹效果。 说明&#xff1a; 从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 clickEffect clickEffect(value: ClickEffect | null) 设置当前组件点击回弹效果。 系统能力&#xff1a; SystemCapabilit…

前端- 基础 表单标签 - 使用场景及组成

大家都有到银行去办理业务的时候&#xff0c;大多数情况下会填一些 纸质的表之类的东西如下图 而我们在网页中也会经常遇到 像现实生活中在银行填表那样的情景&#xff0c;如下图 &#xff1a; 上示就是 网页中的表单的使用场景了 表单标签 &#xff1a; 为什么需要表单 …

k8s-kubeapps图形化管理 21

结合harbor仓库 由于kubeapps不读取hosts解析&#xff0c;因此需要添加本地仓库域名解析&#xff08;dns解析&#xff09; 更改context为全局模式 添加repo仓库 复制ca证书 添加成功 图形化部署 更新部署应用版本 再次进行部署 上传nginx 每隔十分钟会自动进行刷新 在本地仓库…

CSS3新特性

简介 继CSS2之后&#xff0c;CSS3增加了很多新的特性&#xff0c;虽然W3C仍在规范中&#xff0c;但是很多新的CSS3属性已经在很多现代浏览器中得到了支持。 CSS3边框 在CSS3中&#xff0c;可以创建圆角边框&#xff0c;添加边框阴影&#xff0c;设置边框图片&#xff0c;利用…

如何在因果推断中更好地利用数据?

导读&#xff1a;本文转载自 DataFun 社区&#xff0c;分享题目为《如何在因果推断中更好地利用数据&#xff1f;》&#xff0c;主要介绍团队近期在因果上已发表论文的相关工作。本报告从两个方面来介绍我们如何利用更多的数据来做好因果推断&#xff0c;一个是利用历史对照数据…

表达式和语句

本文参考C Primer Plus进行C语言学习 文章目录 表达式语句 副作用和序列点复合语句&#xff08;块&#xff09;类型转换 1.表达式 表达式由运算符和运算对象组成。下面是一些表达式&#xff1a; 4 -6 421 a*&#xff08;bc/d&#xff09;/20 q5*2 xq%3 q>3 每个表达式都有一…