Download the NorthWind Databaseand set the connecttionstring as
<connectionStrings>
<add name="constr" connectionString="Data Source=WIN-CJ18T6BKTV2\SQL2005; Initial Catalog=Northwind; user ID=sa; password=pass@123" providerName="System.Data.SqlClient"/>
</connectionStrings>
refer this link and download the demo and do the following changes
http://www.aspsnippets.com/Articles/Multilevel-N-Level-Nested-GridView-GridView-inside-GridView-in-ASPNet-with-Paging.aspx
1)Form Tag
HTML:
<form id="form1" runat="server">
<asp:GridView ID="gvCustomers" runat="server" AutoGenerateColumns="false" CssClass="Grid"
DataKeyNames="CustomerID" OnRowCommand="gvCustomers_RowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imgOrdersShow" runat="server" OnClick="Show_Hide_OrdersGrid"
ImageUrl="~/images/plus.png" CommandArgument="Show" />
<asp:Panel ID="pnlOrders" runat="server" Visible="false" Style="position: relative">
<asp:GridView ID="gvOrders" runat="server" AutoGenerateColumns="false" PageSize="5"
AllowPaging="true" OnPageIndexChanging="OnOrdersGrid_PageIndexChanging" OnRowCommand="pnlOrders_RowCommand"
CssClass="ChildGrid" DataKeyNames="OrderId">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imgProductsShow" runat="server" OnClick="Show_Hide_ProductsGrid"
ImageUrl="~/images/plus.png" CommandArgument="Show" />
<asp:Panel ID="pnlProducts" runat="server" Visible="false" Style="position: relative">
<asp:GridView ID="gvProducts" runat="server" AutoGenerateColumns="false" PageSize="2"
AllowPaging="true" OnPageIndexChanging="OnProductsGrid_PageIndexChanging" OnRowCommand="gvProducts_RowCommand"
CssClass="Nested_ChildGrid">
<Columns>
<asp:BoundField ItemStyle-Width="150px" DataField="ProductId" HeaderText="Product Id" />
<asp:BoundField ItemStyle-Width="150px" DataField="ProductName" HeaderText="Product Name" />
<asp:ButtonField ItemStyle-Width="150px" HeaderText="RowCommand" Text="Click Me"
ButtonType="Button" CommandName="OpenPopup" />
</Columns>
</asp:GridView>
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField ItemStyle-Width="150px" DataField="OrderId" HeaderText="Order Id" />
<asp:BoundField ItemStyle-Width="150px" DataField="OrderDate" HeaderText="Date" />
<asp:ButtonField ItemStyle-Width="150px" HeaderText="RowCommand" Text="Click Me"
ButtonType="Button" CommandName="OpenPopup" />
</Columns>
</asp:GridView>
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField ItemStyle-Width="150px" DataField="ContactName" HeaderText="Contact Name" />
<asp:BoundField ItemStyle-Width="150px" DataField="City" HeaderText="City" />
<asp:ButtonField ItemStyle-Width="150px" HeaderText="RowCommand" Text="Click Me"
ButtonType="Button" CommandName="OpenPopup" />
</Columns>
</asp:GridView>
</form>
2) Add the following events
protected void gvCustomers_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "OpenPopup")
{
string message = "Row Command Fired";
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<script type = 'text/javascript'>");
sb.Append("window.onload=function(){");
sb.Append("alert('");
sb.Append(message);
sb.Append("')};");
sb.Append("</script>");
ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb.ToString());
}
}
protected void pnlOrders_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "OpenPopup")
{
string message = "Row Command Fired in First Child GridView";
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<script type = 'text/javascript'>");
sb.Append("window.onload=function(){");
sb.Append("alert('");
sb.Append(message);
sb.Append("')};");
sb.Append("</script>");
ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb.ToString());
}
}
protected void gvProducts_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "OpenPopup")
{
string message = "Row Command Fired in Second Child GridView";
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<script type = 'text/javascript'>");
sb.Append("window.onload=function(){");
sb.Append("alert('");
sb.Append(message);
sb.Append("')};");
sb.Append("</script>");
ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb.ToString());
}
}