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)
{
..
}
}