如何遍历GridView中的每一行,每列和单元格并获取其值

我有一个数据绑定的GridView ,在button_click上我想逐行读取GridView并读取一行中每个单元格的值并更新数据库中的表格? 我也知道如何检查该单元格是否包含null。

我正在尝试这样的事情而陷入困境:

 protected void SAVE_GRID_Click(object sender, EventArgs e) { int rowscount = GridView2.Rows.Count; int columnscount = GridView2.Columns.Count; for (int i = 0; i < rowscount; i++) { for (int j = 1; j < columnscount; j++) { // I want to get data of each cell in a row // I want to read the corresponding header and store } } } 

最简单的是使用foreach

 foreach(GridViewRow row in GridView2.Rows) { // here you'll get all rows with RowType=DataRow // others like Header are omitted in a foreach } 

编辑:根据您的编辑,您正在错误地访问列,您应该从0开始:

 foreach(GridViewRow row in GridView2.Rows) { for(int i = 0; i < GridView2.Columns.Count; i++) { String header = GridView2.Columns[i].HeaderText; String cellText = row.Cells[i].Text; } } 

正如“Tim Schmelter”所说,这是最好的方法:只需改变它的代码seconde循环(GridView2.Columns [i] .Count by row.Cells.Count)所以它看起来似乎是这样的:

 foreach(GridViewRow row in GridView2.Rows) { for(int i = 0; i < GridView2.Columns.Count; i++) { String header = GridView2.Columns[i].HeaderText; String cellText = row.Cells[i].Text; } } 

谢谢。

 foreach (DataGridViewRow row in GridView2.Rows) { if ( ! row.IsNewRow) { for (int i = 0; i < GridView2.Columns.Count; i++) { String header = GridView2.Columns[i].HeaderText; String cellText = Convert.ToString(row.Cells[i].Value); } } } 

在迭代单元格值之前,需要检查NewRow。

 foreach (DataGridViewRow row in dataGridView1.Rows) { for (int i = 0; i < dataGridView1.Columns.Count; i++) { String header = dataGridView1.Columns[i].HeaderText; //String cellText = row.Cells[i].Text; DataGridViewColumn column = dataGridView1.Columns[i]; // column[1] selects the required column column.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; // sets the AutoSizeMode of column defined in previous line int colWidth = column.Width; // store columns width after auto resize colWidth += 50; // add 30 pixels to what 'colWidth' already is this.dataGridView1.Columns[i].Width = colWidth; // set the columns width to the value stored in 'colWidth' } }