You can do using the article Pass Selected Row of ASP.Net GridView control to another Page, with little modifications
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" Font-Names="Arial"
Font-Size="10pt">
<Columns>
<asp:BoundField ItemStyle-Width="150px" DataField="Item" HeaderText="Item" />
<asp:BoundField ItemStyle-Width="150px" DataField="Price" HeaderText="Price" />
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList ID="ddlTypes" runat="server">
<asp:ListItem Text="Type1" Value="1"></asp:ListItem>
<asp:ListItem Text="Type2" Value="2"></asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnSelect" runat="server" Text="Select" CommandName="Select" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="btnSend" runat="server" Text="Send Selected Row" OnClick="Send" />
Page 1
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[2] { new DataColumn("Item"), new DataColumn("Price") });
dt.Rows.Add("Shirt", 199);
dt.Rows.Add("Football", 020);
dt.Rows.Add("Shirt", 566);
dt.Rows.Add("Disc", 099);
dt.Rows.Add("Watch", 54);
dt.Rows.Add("Clock", 890);
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
protected void Send(object sender, EventArgs e)
{
if (GridView1.SelectedRow != null)
{
Server.Transfer("~/Page2.aspx");
}
else
{
ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Please select a row.')", true);
}
}
Page 2
protected void Page_Load(object sender, EventArgs e)
{
if (this.Page.PreviousPage != null)
{
GridView GridView1 = (GridView)this.Page.PreviousPage.FindControl("GridView1");
GridViewRow selectedRow = GridView1.SelectedRow;
Response.Write("Item: " + selectedRow.Cells[0].Text + "<br />");
Response.Write("Price: " + selectedRow.Cells[1].Text + "<br />");
Response.Write("Type: " + (selectedRow.FindControl("ddlTypes") as DropDownList).SelectedItem.Text);
}
}