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

Arc*_*B.R 6 c# asp.net 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
        }
    }       
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 20

最简单的方法是使用foreach:

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

编辑:根据您的编辑,您正在错误地访问列,您应该从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;
    }
}
Run Code Online (Sandbox Code Playgroud)


mke*_*bri 5

正如"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;
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢.