web-dev-qa-db-de.com

Wie durchlaufen Sie jede einzelne Zeile, Spalte und Zelle in einer GridView und erhalten Sie ihren Wert

Ich habe eine GridView, was datenbank ist, auf button_click. Ich möchte die GridView Zeile für Zeile in jeder Spalte lesen und den Wert jeder Zelle in einer Zeile lesen und eine Tabelle in der Datenbank aktualisieren. Ich weiß auch, wie man überprüft, ob diese Zelle null enthält.

Ich versuche so etwas und bin festgefahren:

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
        }
    }       
}
5
Archana B.R

Am einfachsten wäre eine foreach:

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

Bearbeiten: Entsprechend Ihren Änderungen greifen Sie nicht richtig auf die Spalte zu. Sie sollten mit 0 beginnen:

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;
    }
}
18
Rango

Wie es von "Tim Schmelter" gesagt wird, ist dies der beste Weg: Ändern Sie einfach den Code der seconde-Schleife (GridView2.Columns [i] .Count by row.Cells.Count), damit es so aussieht: 

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;
    }
}

danke dir.

5
mkebri
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);
                    }
                }
            }

Here Vor dem Iterieren nach Zellen Werte müssen auf NewRow überprüfen.

0
Satyavan Choure
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'
            }
        }
0
Irfan Noor