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作增删查改,虽然能实现,但是代码复杂难以维护,而且输入条件单一,容易操作失误,不建议这么做。
相关文章:
C#高级:Winform桌面开发中DataGridView的详解
一、每条数据增加一个按钮,点击输出对应实体 请先确保正确添加实体的名称和文本: private void button6_Click(object sender, EventArgs e) {//SQL查询到数据,存于list中List<InforMessage> list bll.QueryInforMessage();//含有字段…...
java八股文复习-----2024/03/05----基础---反射,动态代理。序列化
来源一 大彬八股文 来源二 2023 20W字八股文 2024秋招八股文 1.Java创建对象有几种方式? Java创建对象有以下几种方式: 用new语句创建对象。使用反射,使用Class.newInstance()创建对象。调用对象的clone()方法。运用反序列化手段&#x…...
【人工智能】Anthropic发布强大的Claude3对齐GPT-4,大模型杂谈个人感想
北京时间3月5日,人工智能创业公司Anthropic宣布,推出其突破性的Claude 3系列模型。Claude 3系列包含三个子模型,分别为Claude 3 Haiku、Claude 3 Sonnet和Claude 3 Opus,它们提供不同程度的智能、速度和成本选择,以满足…...
基于openKylin与RISC-V的MindSpore AI项目实践
项目目标: 在openKylin系统上安装和配置MindSpore框架。开发一个简单的图像分类模型,并在RISC-V平台上进行训练和推理。根据RISC-V的特性,对MindSpore框架进行必要的优化。 目录 项目目标: 训练模型 编写训练代码,设…...
【牛客】VL64 时钟切换
描述 题目描述: 存在两个同步的倍频时钟clk0 clk1,已知clk0是clk1的二倍频,现在要设计一个切换电路,sel选择时候进行切换,要求没有毛刺。 信号示意图: 波形示意图: 输入描述: clk0 clk1为时…...
Java设计模式——桥连模式
桥接模式简单来说就是通过将抽象部分和具体部分分离,使它们可以独立地变化。如果你的一个类存在多个变化维度(如抽象和具体的实现)。若使用继承来处理这些变化,将会导致类层次结构的急剧增加,难以管理和维护。并且&…...
数据结构与算法:堆排序和TOP-K问题
朋友们大家好,本节内容来到堆的应用:堆排序和topk问题 堆排序 1.堆排序的实现1.1排序 2.TOP-K问题3.向上调整建堆与向下调整建堆3.1对比两种方法的时间复杂度 我们在c语言中已经见到过几种排序,冒泡排序,快速排序(qsor…...
【NR 定位】3GPP NR Positioning 5G定位标准解读(三)
目录 前言 5 NG-RAN UE定位架构 5.1 架构 5.2 UE定位操作 5.3 NG-RAN定位操作 5.3.1 通用NG-RAN定位操作 5.3.2 OTDOA定位支持 5.3.3 广播辅助信息支持 5.3.4 NR RAT相关定位支持 5.4 NG-RAN中与UE定位相关的元素功能描述 5.4.1 用户设备(UE) …...
文件操作与IO(3) 文件内容的读写——数据流
目录 一、流的概念 二、字节流代码演示 1、InputStream read方法 第一个没有参数的版本: 第二个带有byte数组的版本: 第三个版本 搭配Scanner的使用 2、OutputStream write方法 第一个版本: 第二个写入整个数组版本: …...
《PyTorch深度学习实践》第十一讲卷积神经网络进阶
一、 1、卷积核超参数选择困难,自动找到卷积的最佳组合。 2、1x1卷积核,不同通道的信息融合。使用1x1卷积核虽然参数量增加了,但是能够显著的降低计算量(operations) 3、Inception Moudel由4个分支组成,要分清哪些是在Init里定义…...
Ansible的playbook的编写和解析
目录 什么是playbook Ansible 的脚本 --- playbook 剧本 实例部署(使用playbook安装启动httpd服务) 1.编写一个.yaml文件 在主机下载安装http,将配置文件复制到opt目录下 运行playbook 在192.168.17.77主机上查看httpd服务是否成功开启…...
[环境配置]ssh连接报错“kex_exchange_identification: read: Connection reset by peer”
已经被VScode ssh毒死好几次了,都是执行命令意外中断,然后又VSCode里连不上、本机Terminal也连不上了。。。 重启远程服务器,VSCode可以连上了, 系统ssh还是不行,报错“kex_exchange_identification: read: Connecti…...
Mybatis-Plus——04,自动填充时间(新注解)
自动填充(新注解) 一、数据库添加两个字段二、实体类字段属性上增加注解三、编写填充器四、查看结果4.1 插入结果4.2 修改结果 五、同步修改5.1实体类属性改成 INSERT_UPDATE5.2 在填充器的方法这里加上 updateTime5.3 查看结果————————创作不易…...
【动态规划入门】最长上升子序列
每日一道算法题之最长上升子序列 一、题目描述二、思路三、C代码 一、题目描述 题目来源:LeetCode 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 输入格式 第一行包含整数 N。 第二行包含 N个整数,表示完整序列。 输出格式 输出一个整数…...
LabVIEW眼结膜微血管采集管理系统
LabVIEW眼结膜微血管采集管理系统 开发一套基于LabVIEW的全自动眼结膜微血管采集管理系统,以提高眼结膜微血管临床研究的效率。系统集成了自动化图像采集、图像质量优化和规范化数据管理等功能,有效缩短了图像采集时间,提高了图像质量&#…...
通过GitHub探索Python爬虫技术
1.检索爬取内容案例。 2.找到最近更新的。(最新一般都可以直接运行) 3.选择适合自己的项目,目前测试下面画红圈的是可行的。 4.方便大家查看就把代码粘贴出来了。 #图中画圈一代码 import requests import os import rewhile True:music_id input("请输入歌曲…...
【Python】-----基础知识
注释 定义:让计算机跳过这个代码执行用三个单引号/双引号都表示注释信息,在Python中单引号与双引号没有区别,但必须是成对出现 输出与输入 程序是有开始,有结束的,程序运行规则:从上而下,由内…...
如何学习、上手点云算法(二):点云处理相关开源算法库、软件、工具
写在前面 本文内容 一些用于点云处理的开源算法库、软件介绍,主要包含: CloudCompare, MeshLab, PCL, Open3D, VTK, CGAL等 不定时更新 平台/环境 Windows10, Ubuntu1804, CMake, Open3D, PCL 转载请注明出处: https://blog.csdn.net/qq_41…...
为什么会对猫毛过敏?如何缓解?浮毛克星—宠物空气净化器推荐
猫咪过敏通常是因为它们身上的Fel d1蛋白质导致的,这些蛋白质附着在猫咪的皮屑上。猫咪舔毛的过程会带出这些蛋白质,一旦接触就可能引发过敏症状,比如打喷嚏等。因此,减少空气中的浮毛数量有助于减轻过敏现象。猫用空气净化器可以…...
Linux学习-etcdctl安装
etcdctl3.5下载链接 1. 先通过上面链接下载gz包2. 解压 [rootk8s-master ~]# tar xf etcd-v3.5.11-linux-amd64.tar.gz [rootk8s-master etcd-v3.5.11-linux-amd64]# ls Documentation etcd etcdctl etcdutl README-etcdctl.md README-etcdutl.md README.md READMEv2-e…...
AI 编程盛行的时代,为什么 “『DC- WFW』” 仍然具有必要性?
AI训练存储选型的演进路线 第一阶段:单机直连时代 早期的深度学习数据集较小,模型训练通常在单台服务器或单张GPU卡上完成。此时直接将数据存储在训练机器的本地NVMe SSD/HDD上。 其优势在于IO延迟最低,吞吐量极高,也就是“数据离…...
G-Helper实战指南:华硕笔记本性能调优与硬件管理深度解析
G-Helper实战指南:华硕笔记本性能调优与硬件管理深度解析 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix,…...
文字的编码方式————不同UTF之间的区别
目录 1. 编码与字体 A. ASCII(American Standard Code for Information Interchange) B. ANSI C. UNICODE 2 . UNICODE 编码实现 (1)UTF-16 a. UTF-16 LE b. UTF-16 BE (2)UTF-8 (3ÿ…...
Mod Loader:重新定义GTA系列模组管理的技术架构与实践指南
Mod Loader:重新定义GTA系列模组管理的技术架构与实践指南 【免费下载链接】modloader Mod Loader for GTA III, Vice City and San Andreas 项目地址: https://gitcode.com/gh_mirrors/mo/modloader 一、核心痛点解析:传统模组管理的三大技术瓶颈…...
零基础入门机器人抓取:在快马平台轻松搞定龙虾openclaw安装与第一个程序
最近在学习机器人抓取相关的知识,发现龙虾openclaw是个不错的入门工具。作为一个完全零基础的小白,我在安装和配置环境时遇到了不少困难。好在发现了InsCode(快马)平台,它帮我轻松解决了这些问题。下面分享一下我的学习过程。 了解openclaw …...
FPGA实战:手把手教你用Verilog状态机实现一个可配置的I2C主机模块
FPGA实战:构建高可配置I2C主机控制器的九大设计要点 在嵌入式系统设计中,I2C总线因其简洁的两线制结构和灵活的多主从架构,成为连接各类传感器的首选方案。本文将深入探讨如何用Verilog状态机实现一个工业级可配置I2C主机控制器,…...
SEO优化的预算一般应如何合理安排
SEO优化的预算一般应如何合理安排 在当今数字化时代,网站的搜索引擎优化(SEO)已成为提升网站流量和品牌知名度的重要手段。如何合理分配SEO优化预算成为许多企业和网站管理者面临的一个重要课题。本文将从问题分析、原因说明、解决方法、注意…...
B站视频转文字:如何用AI技术轻松提取视频内容?
B站视频转文字:如何用AI技术轻松提取视频内容? 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 在信息爆炸的时代,视频已成…...
从旋转矩阵到李代数:三维空间刚体运动的速度解析与几何直观
1. 刚体运动的基本概念:从旋转轴到角速度 想象你手里握着一个魔方,当你想让它旋转时,总会下意识地找一个转动轴。这个简单的动作背后,藏着描述三维空间刚体运动的核心数学工具。在机器人控制和计算机视觉领域,我们经常…...
鸣潮智能助手:提升游戏体验的AI解决方案
鸣潮智能助手:提升游戏体验的AI解决方案 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 您是否曾遇到这样的困扰&#…...
