GridView Nested GridView in ASP.Net

GridView nested GridView in asp net :

Image1.jpg

-- CSS 

 

<style type="text/css">

      .Grid td

        {

            background-color: #eee;

            color: black;

            font-size: 10pt;

            line-height:200%

        }

        .Grid th

        {

            background-color: #6f6e6e;

            color: White;

            font-size: 10pt;

            line-height:200%

        }

        .ChildGrid td

        {

            background-color: white  !important;

            color: black;

            font-size: 10pt;

            line-height:200%

        }

        .ChildGrid th

        {

            background-color: #890000 !important;

            color: White;

            font-size: 10pt;

            line-height:200%

        }

 </style>

 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

<script type="text/javascript">

    $("[src*=plus]").live("click", function () {

    $(this).closest("tr").after("<tr><td></td><td colspan = '999'>" + $(this).next().html() + "</td></tr>")

    $(this).attr("src", "../image/minus.png");

});

    $("[src*=minus]").live("click", function () {

    $(this).attr("src", "../image/plus.png");

    $(this).closest("tr").next().remove();

});

</script>

Aspx
 

<div align="center" style="border: 1px solid silver">

    <asp:gridview id="grdPro" runat="server" autogeneratecolumns="false" cssclass="Grid"

        datakeynames="product_id" onrowdatabound="grdPro_RowDataBound" allowpaging="True"

        onpageindexchanging="grdPro_PageIndexChanging">

     <Columns>

       <asp:TemplateField>

         <ItemTemplate>

            <img alt = "" style="cursor: pointer" src="../image/plus.png" temp_src="../image/plus.png" />

--Panel Style Display None

               <asp:Panel ID="pnlOrders" runat="server" Style="display: none">

--Nested Grid

       <asp:GridView ID="grdSubPro" runat="server"             

                   AutoGenerateColumns="false" CssClass = "ChildGrid">

         <Columns>

               <asp:BoundField ItemStyle-Width="150px" 

                           DataField="color" HeaderText="color" />

               <asp:TemplateField ItemStyle-Width="150px"                  

                                     HeaderText="ColorCode">

               <ItemTemplate>

                 <asp:Label ID="lblColorCode" Width="120px"       

                     Text='<%#Eval("color") %>' ForeColor="White"              

                     BackColor='<%#System.Drawing.ColorTranslator.

                     FromHtml(Eval("color").ToString()) %>' runat="server">

              </asp:Label>

           </ItemTemplate>

           </asp:TemplateField>

                <asp:BoundField ItemStyle-Width="150px" 

                           DataField="size"  HeaderText="size" />

           </Columns>

          </asp:GridView>

           </asp:Panel>

          </ItemTemplate>

          </asp:TemplateField>

     <asp:BoundField ItemStyle-Width="150px" 

                  DataField="Productname" HeaderText="Pro-Name" />

     <asp:TemplateField HeaderText="Pro-Image">

           <ItemTemplate>

               <asp:Image ID="imgProImage" runat="server" Width="150px" Height="100px" 

                 ImageUrl='<%#string.Format("~/{0}",Eval("Image")) %>' />

                </ItemTemplate>

            </asp:TemplateField>

     <asp:BoundField ItemStyle-Width="150px" 

                   DataField="Productdes" HeaderText="Pro-Description" />

     <asp:BoundField ItemStyle-Width="150px"

                   DataField="Price" HeaderText="Price" />

     <asp:BoundField ItemStyle-Width="150px"

                    DataField="Brandname" HeaderText="Brandname"/>

   </Columns>

    </asp:gridview>

</div>

 
Aspx.cs
 

protected void Page_Load(object sender, EventArgs e)

{

    if (!IsPostBack)

    {

         grdProductView();

    }

}

public void grdProductView()
{

    Select = "Select * From Product_Master";

    da = new SqlDataAdapter(Select, Conn);

    da.Fill(ds);

    grdPro.DataSource = ds;

    grdPro.DataBind();            
}

 

protected void grdPro_RowDataBound(object sender, GridViewRowEventArgs e)
{

      if (e.Row.RowType == DataControlRowType.DataRow)

      {

           string ProID = grdPro.DataKeys[e.Row.RowIndex].Value.ToString();

           GridView gvSub = e.Row.FindControl("grdSubPro") as GridView;

           Label lblColorcode = e.Row.FindControl("lblColorCode") as Label;

           string select1;

           DataSet ds1 = new DataSet();

           select1 = "Select * From test1 where product_id="+ProID+"";

           da = new SqlDataAdapter(select1, Conn);

           da.Fill(ds1);

           gvSub.DataSource = ds1;

           gvSub.DataBind();

    }

}

 

protected void grdPro_PageIndexChanging(object sender, GridViewPageEventArgs e)

{

    grdPro.PageIndex = e.NewPageIndex;

    grdProductView();

} 


Image2.jpg


Image3.jpg


Image4.jpg