当前位置: 首页 > article >正文

C# WinForm —— 39 40 41 42 DataGridView 介绍与使用

1. 简介

以网格的形式来显示表格数据,一般与数据库交互,将数据库中某一个表格的数据绑定到 UI控件上 并显示出来
网格中的行和列由用户自定义

三个重要对象:行、列、单元格
在这里插入图片描述

2. 属性

属性解释
(Name)控件ID,在代码里引用的时候会用到
AllowUserToAddRows指示是否向用户显示用于添加行的选项
AllowUserToAddRows为true时,编辑第一行的时候,下面自动出现空白行
编辑完按回车保存
在这里插入图片描述
AllowUserToDeleteRows指示是否允许用户从DataGridView删除行
AllowUserToDeleteRows为true时,选中要删除的行,按Delete即可删除行
不推荐,容易误删数据,推荐使用逻辑删除,添加标识列,0表示删除,1表示未删除
在这里插入图片描述
AllowUserToOrderColumns是否可以拖动来调整列的顺序
AlternatingRowsDefaultCellStyle在这里插入图片描述
Anchor定义某个控件绑定到容器的边缘,当控件绑定到某个边缘时,与指定边缘最接近的控件边缘与指定边缘之间的距离将保持不变
AutoSizeColumnsMode确定可见列的自主调整大小模式
None:不调整
ColumnHeader:
AllCellsExceptHeader:
AllCells:
DisplayedCellsExceptHeader:
DisplayedCells:
Fill:完全填充
在这里插入图片描述
AutoSizeRowsMode确定可见行的自主调整大小模式,不用特别去设置
None:不调整
AllHeaders:
AllCellsExceptHeader:
AllCells:
DisplayedCellsExceptHeader:
DisplayedCells:
DisplayedHeaders:
CellBoderStyle单元格的边框样式:Custom、Single(默认)、Raised、Sunken、None、SingleVertical、RaisedVertical、SunkenVertical、SingleHorizontal、RaisedHorizontal、SunkenHorizontal
RaisedHorizontal样式如下:
在这里插入图片描述
Columns表格列的集合
在这里插入图片描述
在这里插入图片描述
DataSource指示DataGridView控件的数据源,一般是DataTable或者 List<T> 集合
AutoGenerateColumns指定数据源时,是否自动创建列,默认是true
MultiSelect用户是否可以选择DataGridView的多个单元格、行或列
RowHeaderVisible不显示行标题时如下:
在这里插入图片描述
RowTemplate设置行的默认格式:
在这里插入图片描述
Scrollbars滚动条的类型:横向、竖向、双向都有、None
SelectionMode选择的模式
在这里插入图片描述

在这里插入图片描述

3. 事件

常用事件解释
CellClick单击单元格任意部分时触发的事件
CellContentClick单击单元格的内容时触发的事件
在这里插入图片描述
CellValueChanged单元格的值改变时触发的事件,失去焦点时才触发
在这里插入图片描述
CurrentCellDirtyStateChanged单元格状态因其内容更改而更改时发生

在这里插入图片描述

4. 代码添加列、行

代码添加列:
在这里插入图片描述
在这里插入图片描述

代码添加行:
在这里插入图片描述

在这里插入图片描述

5. 绑定数据源

DataSource:指示DataGridView控件的数据源,一般是DataTable或者 List<T> 集合

5.1 DataTable数据源

  1. 数据库中的UserInfos表格
    在这里插入图片描述

  2. 提前写好的 DBHelper类
    在这里插入图片描述

  3. 往From中拖一个DataGridView控件

  4. 编辑Form code
    using System.Data
    using WFFormUse.Helper
    在这里插入图片描述

在这里插入图片描述

  1. 运行结果:
    在这里插入图片描述
    上面的 UserId,UserName,Age是数据库中的表格的字段名,因为DataGridView中没有手动添加列,而AutoGenerateColumns属性默认是true,所以会根据数据库中的字段名自动添加列

上面的代码只适用于往From中拖DataGridView控件后,没有手动添加列的情况,当我们希望UI上面 DataGridView显示的列标题是编号、姓名、年龄时,可以:

  1. 可以对sql语句做文章——为列名取别名
    在这里插入图片描述
    在这里插入图片描述
  2. 查询结果集可能包含更多列的数据,但UI上只显示这三列数据时,需要事先把DataGridView的AutoGenerateColumns属性设为false,在DataGridView控件中添加列,并设置列的DataPropertyName属性,
    在这里插入图片描述
    在这里插入图片描述
    “Select * from UserInfos”是获取 UserInfos表格的所有列,一般情况下,根据需求,只需查询需要的列

5.2 List列表 数据源

将数据库中的数据表格转换成List列表的两种方式:

  1. 加载到DataTable中,将DataTable的每个行变成一个对象,多行就是一个List集合
  2. 数据量不是特别大的情况下,利用SqlDataReader逐条读取,转换为一个实体对象,实时添加到List集合中。这种方法会持续占用连接,数据量大的时候,会造成卡顿

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

对获取的数据源进行操作:

在这里插入图片描述

如果DataGridView绑定的DataSource是List类型,那么只能将 dgvUserNew.DataSource 转换成 List类型,获取的行对象是UserInfoNew类型
如果DataGridView绑定的DataSource是DataTable类型,那么只能将 dgvUserNew.DataSource 转换成 DataTable类型,获取的行对象是 DataRow类型

在这里插入图片描述

对获取的数据源进行删除,修改:
在这里插入图片描述
运行:
在这里插入图片描述
点击按钮之后,就变成了:
在这里插入图片描述
这里只对获取的数据源进行了修改,没有修改数据库中的数据

也可以对数据源进行修改,发送到数据库中,再从数据库中获取数据源

参考:

  1. 2023年C#之WinForm零基础教程50讲-39
  2. 2023年C#之WinForm零基础教程50讲-40
  3. 2023年C#之WinForm零基础教程50讲-41
  4. 2023年C#之WinForm零基础教程50讲-42

http://www.kler.cn/a/430262.html

相关文章:

  • OpenAI 故障复盘 - 阿里云容器服务与可观测产品如何保障大规模 K8s 集群稳定性
  • 详细讲一下什么是闭包,为什么会产生闭包,闭包会导致什么,闭包可以帮助我们在开发中干什么
  • IOS开发如何从入门进阶到高级
  • 调整Python+Pytest+Allure+Yaml+Pymysql框架中需要执行的用例顺序
  • BloombergGPT: A Large Language Model for Finance——面向金融领域的大语言模型
  • 添加系统级res资源包
  • k8s 之 Deployment
  • vue vxe-table 实现财务记账凭证并打印
  • Unix、GNU、BSD 风格中 ps 参数的区别
  • git将一个项目的文件放到另一个项目的文件夹下
  • 适配器模式 (Adapter) · 对象适配器 · 类适配器 · 实际开发中的应用
  • 游戏引擎学习第35天
  • 群控系统服务端开发模式-应用开发-邮件发送工具类
  • 【opencv入门教程】3. Rect 类用法
  • 嵌入式学习(15)-stm32通用GPIO模拟串口发送数据
  • 设计模式-装饰器模式(结构型)与责任链模式(行为型)对比,以及链式设计
  • 大舍传媒-关于海外媒体宣发的探讨
  • 【ONE·基础算法 || 动态规划(四)】
  • Hadoop不同版本的区别
  • apt 包 源 的维护 和缓存 命令
  • github操作学习笔记
  • 内存管理面试常问
  • 【LLM】NSSCTF Round#25 Basic大模型Prompt挑战全解
  • postman-9.12.2 -- 安装包及汉化包
  • VAS1260Q奇力LED驱动芯片DCDC降压恒流可替代Diodes8860
  • 浙江省有一级科技查新机构吗?