Here is an example:
Markup:
<asp:GridView ID="gridMembersList" AutoGenerateColumns="False" GridLines="None"
runat="server" onrowcommand="gridMembersList_RowCommand">
<Columns>
<asp:TemplateField HeaderText="User Name">
<ItemTemplate>
<asp:Literal ID="ltrlName" runat="server" Text='<%# Eval("Name") %>'> </asp:Literal>
<asp:Literal ID="ltrlSlno" runat="server" Visible="False" Text='<%# Eval("Id") %>'></asp:Literal>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="View More">
<ItemTemplate>
<asp:Button ID="btnViewmore" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" CommandName="More" runat="server" Text="View More" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Code-behind:
protected void gridMembersList_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "More")
{
int index = Convert.ToInt32(e.CommandArgument.ToString());
Literal ltrlslno = (Literal)gridMembersList.Rows[index].FindControl("ltrlSlno");
Literal ltrlName = (Literal)gridMembersList.Rows[index].FindControl("ltrlName");
ScriptManager.RegisterStartupScript(this, this.GetType(),
"Message", "alert('" + ltrlName.Text+ "');", true);
}
}