user8512043
user8512043

Reputation: 1157

Specific Label Value From GridView

I am trying to delete rows from ASP.NET GridView and for demo purpose, I am trying to retrieve names from the rows right now. In the ItemTemplate of the GridView, I've included Label that has id as well name to show. Finally added Button control in the GridView to delete specific rows and tried the following:

<asp:GridView ID="grdData" runat="server" AutoGenerateColumns="false">
        <Columns>
             <asp:TemplateField HeaderText="Id">
                <ItemTemplate>
                    <asp:Label ID="lblId" runat="server" Text='<%# Eval("ProductId") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Name">
                <ItemTemplate>
                    <asp:Label ID="lblName" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
              <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Button ID="btnShow" runat="server" Text="Button" OnClick="btnShow_Click" />
                    </ItemTemplate>
                </asp:TemplateField>
        </Columns>
</asp:GridView>

<asp:Label ID="lblMsg" runat="server"></asp:Label>

In the code-behind, I've iterated the GridView with a loop to get the individual values, say name of the row as follows:

protected void btnShow_Click(object sender, EventArgs e)
{   
    foreach (GridViewRow row in grdData.Rows)
    {
        string val = ((Label)row.FindControl("lblName")).Text;

        lblMsg.Text = val;
    }
}

But unfortunately I get the last name every time I click any row button and here is the screen-shot that I am trying:

ASP.NET GridView

Whenever I click any button, it shows the last name Ice-Cream every time. Anything that I missed here?

Upvotes: 0

Views: 1363

Answers (1)

Mike
Mike

Reputation: 721

<asp:GridView ID="grdData" runat="server" AutoGenerateColumns="false">
            <Columns>
                 <asp:TemplateField HeaderText="Id">
                    <ItemTemplate>
                        <asp:Label ID="lblId" runat="server" Text='<%# Eval("ProductId") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Name">
                    <ItemTemplate>
                        <asp:Label ID="lblName" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                  <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Button ID="btnShow" runat="server" Text="Button" OnClick="btnShow_Click" CommandArgument='<%# Eval("Name") %>' />
                        </ItemTemplate>
                    </asp:TemplateField>
            </Columns>
    </asp:GridView>

    <asp:Label ID="lblMsg" runat="server"></asp:Label>

    protected void btnShow_Click(object sender, EventArgs e)
    {    
        lblMsg.Text = (sender as Button).CommandArgument;
    }

Upvotes: 1

Related Questions