【C#】DataGridView 数据绑定的一些细节
时间:2022-07-23
本文章向大家介绍【C#】DataGridView 数据绑定的一些细节,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
多年不写 Winform 了,突然要做一个 winform 项目,各种不顺手,各种百度。
DataGridView 数据绑定的一些细节问题,记录备查。
数据绑定
BindingList<EmployeeVO> dataSource;
private async void FrmEmployeeInfo_Load(object sender, System.EventArgs e)
{
List<EmployeeVO> employees = await employeeApi.GetList();
dataSource = new BindingList<EmployeeVO>(employees);
dgvEmployees.DataSource = dataSource;
}
绑定数据后,添加删除行,直接对 dataSource
进行 Add
和 Remove
操作,界面会自动更新。更新数据,如果直接对 dataSource
中的元素属性进行修改,界面不会刷新,需要点击修改的元素,才会刷新。要立即刷新,可以用一个新的实例替换掉 dataSource
被修改的实例。
阻止自动创建列
dgvEmployees.AutoGenerateColumns = false;
如果实例中有些列不想显示,就需要阻止自动创建列。
另外,当有 Link 等列时,如果设置此属性,Link 列的 Index
会被排在 TextBox
列之前,导致 ColumnIndex
错乱。
自定义数据格式
private void dgvEmployees_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (dgvEmployees.Columns[e.ColumnIndex].HeaderText == "技能")
{
List<SkillVO> skills = e.Value as List<SkillVO>;
e.Value = string.Join(", ", skills.Select(s => s.Name));
}
}
- Dora.Interception, 为.NET Core度身打造的AOP框架:不一样的Interceptor定义方式
- Dora.Interception,为.NET Core度身打造的AOP框架:全新的版本
- ASP.NET Core的路由[4]:来认识一下实现路由的RouterMiddleware中间件
- 浅谈 Java 并发编程中的若干核心技术
- ASP.NET Core的路由[3]:Router的创建者——RouteBuilder
- ASP.NET Core的路由[2]:路由系统的核心对象——Router
- ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系
- 学习ASP.NET Core, 怎能不了解请求处理管道[6]: 管道是如何随着WebHost的开启被构建出来的?
- 学习ASP.NET Core, 怎能不了解请求处理管道[5]: 中间件注册可以除了可以使用Startup之外,还可以选择StartupFilter
- 学习ASP.NET Core, 怎能不了解请求处理管道[4]: 应用的入口——Startup
- 学习ASP.NET Core, 怎能不了解请求处理管道[3]: 自定义一个服务器感受一下管道是如何监听、接收和响应请求的
- .NET Core多平台开发体验[4]: Docker
- .NET Core多平台开发体验[3]: Linux (Windows Linux子系统)
- .NET Core多平台开发体验[2]: Mac OS X
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
- 简单了解如何封装自己的Python包
- python求解汉诺塔游戏
- Python第三方包PrettyTable安装及用法解析
- 如何让python的运行速度得到提升
- 在keras中对单一输入图像进行预测并返回预测结果操作
- python中数字是否为可变类型
- ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
- PHP示例演示发送邮件给某个邮箱
- PHP设计模式之观察者模式定义与用法分析
- PHP实现数组向任意位置插入,删除,替换数据操作示例
- 实例讲解Python 迭代器与生成器
- opencv 图像轮廓的实现示例
- 基于python实现可视化生成二维码工具
- Python word实现读取及导出代码解析