Rufen Sie den Zellenwert einer GridView-Zeile ab

Rufen Sie den Zellenwert einer GridView-Zeile ab

Versuchen Sie, Ihren Code in

zu ändern
// 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

AKTUALISIERUNG: (basierend auf meinem Kommentar) Wenn Sie nur den Primärschlüsselwert für die ausgewählte Zeile erhalten möchten, besteht ein alternativer Ansatz darin,

festzulegen

datakeynames="yourprimarykey"

für die Gridview-Definition, auf die über den folgenden Code zugegriffen werden kann.

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

Windows Form Iteration-Technik

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

Ich schlage vor, Sie verwenden ein HiddenField innerhalb des Vorlagenfelds. Verwenden Sie FindControl, um dieses Feld zu finden.

dh:

ASPX

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

Code dahinter

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