概要
工作中有要操作这两个单独每个数据的情况
一、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