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

c#关于DataGridView和DataTable

概要

工作中有要操作这两个单独每个数据的情况

一、DataGridView

1、行

Rows(复数,带 s)

DataGridView.Rows

  • 类型DataGridViewRowCollection行集合(容器)
  • 含义:代表的是整个控件的所有行,可以用Rows【】这种来获取具体的某一行
  • 作用:用来批量操作、按索引取单行、新增 / 删除行
// 获取第0行整行对象 DataGridViewRow oneRow = dataGridView_installParamDt.Rows[0]; // 1. 获取总行数 int total = dataGridView.Rows.Count; // 2. 新增一行 dataGridView.Rows.Add(); // 3. 删除指定行 dataGridView.Rows.RemoveAt(2); // 4. 循环遍历所有行 foreach(DataGridViewRow row in dataGridView.Rows) { }

Row(单数,无 s)

  • 类型:单个行对象
  • 含义:表格里单独一行,一行包含多个单元格 Cells,上面Rows【】得到的就是这个
  • 作用:操作这一行里的单元格、读取该行数据
  • DataGridViewRow row = dataGridView_installParamDt.Rows[0]; // 获取当前点击行第1列的值 string val = row.Cells[1].Value.ToString();

  • Rows= 一整个文件夹(装所有行)
  • Row= 文件夹里单一张纸(其中一行数据)

Cells 拿具体的值

获取具体的某个单元格的值,第几行的第几个单元格,一般和Rows[]这种具体的第几行来搭配或者是先用Row去拿去Rows的具体行;

// 第3行,第1列单元格 string Value = dataGridView.Rows[3].Cells[1].Tostring();

RowIndex

事件参数DataGridViewCellEventArgs的属性:e.RowIndex这个一般是个表格的点击事件这种

表头或者空白RowIndex=-1

  • 含义:用户点击 / 操作单元格的行下标
private void dataGridView_installParamDt_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { // 1. e.RowIndex 拿到点击行号 int clickRow = e.RowIndex; // 2. Rows[行号] 取出单行对象 Row DataGridViewRow row = dataGridView_installParamDt.Rows[clickRow]; // 3. 从单行Row里拿单元格数据 string oldValue = row.Cells[1].Value.ToString(); }

2.列

Columns 所有列

和行的Rows一样代表的是表格的所有列,通过Columns[]来获取具体的一列;

// 总列数量 int colCount = dataGridView_installParamDt.Columns.Count; // 通过下标取第0列 DataGridViewColumn col0 = dataGridView_installParamDt.Columns[0]; // 通过列名称取列 DataGridViewColumn col = dataGridView["参数名称"]; // 隐藏某一列 dataGridView_installParamDt.Columns[5].Visible = false;

Column 一列

和行的Row一样是具体的一列,通过Columns[]来获取

DataGridViewColumn col = dataGridView.Columns[0];

ColumnIndex

和RowIndex一样也是事件参数DataGridViewCellEventArgs的属性:e.RowIndex

private void dataGridView_installParamDt_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { int r = e.RowIndex; int c = e.ColumnIndex; if(r > -1 && c > -1) { // r行 c列 的单元格 string val = dataGridView_installParamDt.Rows[r].Cells[c].Value.ToString(); } }

二、DataTable

其他的都一样只有拿某一行某一列的具体的值的时候不太一样因为DataTable 的DataRow内部自带索引器row[列索引],所以可以简写Rows[r][c]

DataTable dt = ru4.datatableClass.dataInstallDt; int r = e.RowIndex; int c = e.ColumnIndex; string v = dt.Rows[r][c].ToString();

26.07.06

http://www.jsqmd.com/news/1139202/

相关文章:

  • 【JAVA毕设源码分享】基于springboot药品商城管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 恐惧魔王AI视频生成模型:暗黑奇幻主题实战指南
  • 【ROS2】 机械臂开发架构:为何“智与看”用 Docker,“真”用传统?
  • IPXWrapper:5分钟让你的经典游戏在Windows 11上重获新生!
  • AI硬件入门指南:小白也能轻松上手的边缘AI开发
  • 基于SpringBoot的小区物品系统的设计与实现毕业设计任务书
  • 具身智能:从认知科学到物理闭环的工程落地路径
  • 5分钟快速修复洛雪音乐六音音源:新手终极指南
  • Uber 如何用原生 gRPC 加速 OpenSearch:从 REST/JSON 瓶颈到搜索与写入性能优化
  • PDK 设计规则文件深度解析:从 6 类基本规则到 DRC/LVS 实战检查
  • 腾讯混元3D+ComfyUI:单图生成完整3D模型的技术解析与实践
  • 片状氧化铈在催化体系中的作用,不只是“形貌不同”这么简单
  • Java计算机毕设之基于 SpringBoot 的法律案例帮扶资源平台的设计与实现 基于前后端分离的线上律师咨询援助系统(完整前后端代码+说明文档+LW,调试定制等)
  • 机器视觉要不要深耕算法?现场工程师实话
  • 2026年7月6日的CSDN的Markdown编辑器如何使用
  • 用墨衍批量生产技术文章,从配置到发布的完整走通记录
  • 地螺丝排名
  • 随机诗词API实战:Vue项目接入完整示例与5个常见坑
  • 从静态限流到智能负载管理:Uber 如何治理大规模数据库过载
  • 为什么很多制造企业上了MES系统,车间还是一团乱?
  • 【Springboot毕设全套源码+文档】基于springboot智慧医疗网上预约系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 多平台分发功能对比,从CSDN一键同步到知乎掘金的真实体验
  • 国产NPU上部署GOT+OCR2.0端到端推理实战
  • 如何永久免费使用IDM?开源激活脚本终极指南
  • Vision Transformer (ViT) 部署实战:PyTorch 1.12 下 ImageNet-1K 微调,Top-1 精度 88.5%
  • Slickflow MCP Server:将工作流引擎接入 AI 编排平台的实践
  • Claude 账号又被封了?封号潮下,企业如何把 Claude 用得合规又稳定
  • 多项全球第一!大晓开源统一具身基模型ACE-Brain-0.5,迈向 Physical Agentic AI
  • 性价比高的地螺丝排名
  • 超外差雷达接收机噪声系数优化:从 LNA 选型到混频器匹配的 5 个关键点