Obtener el valor de celda de una fila de GridView

Obtener el valor de celda de una fila de GridView

Intenta cambiar tu código a

// Get the currently selected row using the SelectedRow property.
GridViewRow row = dgCustomer.SelectedRow;

// And you respective cell's value
TextBox1.Text = row.Cells[1].Text

ACTUALIZACIÓN: (basado en mi comentario) Si todo lo que está tratando de obtener es el valor de la clave principal para la fila seleccionada, entonces un enfoque alternativo es establecer

datakeynames="yourprimarykey"

para la definición de vista de cuadrícula a la que se puede acceder desde el código subyacente como se muestra a continuación.

TextBox1.Text = CustomersGridView.SelectedValue.ToString();

Técnica de iteración de formularios de Windows

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    if (row.Selected)
    {
        foreach (DataGridViewCell cell in row.Cells)
        {
            int index = cell.ColumnIndex;
            if (index == 0)
            {
                value = cell.Value.ToString();
                //do what you want with the value
            }
        }
    }
}

Le sugiero que use un campo de plantilla dentro de HiddenField, use FindControl para encontrar este campo.

es decir:

ASPX

                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:HiddenField ID="hfFname" runat="server" Value='<%# Eval("FileName") %>' />
                    </ItemTemplate>
                </asp:TemplateField>

Código detrás

protected void gvAttachments_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        GridView gv1 = (GridView)sender;
        GridViewRow gvr1 = (GridViewRow)gv1.Rows[e.RowIndex];

        //get hidden field value and not directly from the GridviewRow, as that will be null or empty!
        HiddenField hf1 = (HiddenField)gvr1.FindControl("hfFname");
        if (hf1 != null)
        {
           ..
        }
    }