Default.aspx
<script type="text/javascript">
function collapseExpand(divname) {
var div = document.getElementById(divname);
var img = document.getElementById('img' + divname);
if (div.style.display == "none") {
div.style.display = "inline";
img.src = "minus.gif";
img.alt = "hide";
}
else {
div.style.display = "none";
img.src = "plus.gif";
img.alt = "show";
}
}
</script>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" GridLines="None"
BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px"
CellPadding="3" CellSpacing="2" onrowdatabound="GridView1_RowDataBound" ShowFooter="True"
AllowPaging="True" onpageindexchanging="GridView1_PageIndexChanging"
PageSize="2" >
<PagerSettings FirstPageText="First" />
<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
<Columns>
<asp:TemplateField ItemStyle-Width="20px">
<ItemTemplate>
<a href="JavaScript:collapseExpand('div<%# Eval("id") %>');">
<img src="plus.gif" alt="show" id="imgdiv<%# Eval("id") %>" width="9px" border="0" />
</a>
</ItemTemplate>
<ItemStyle Width="20px"></ItemStyle>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Eval("id") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" style="text-transform:capitalize" Text='<%#Eval("name") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="Label5" runat="server" Text="TOTAL ="></asp:Label>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Description">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%#Eval("description") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="lbltot" runat="server"></asp:Label>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Grand Total">
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%#Eval("total") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="Label9" runat="server" Text="GrandTotal ="></asp:Label>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Edit/Delete">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="editDetail" >Edit</asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" OnClick="LinkButton2_Click">Delete</asp:LinkButton>
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="lblgt" runat="server"></asp:Label>
</FooterTemplate>
</asp:TemplateField>
<%--child grid--%>
<asp:TemplateField>
<ItemTemplate>
<tr>
<td colspan="100%">
<div id="div<%# Eval("id") %>" style="display:none; position: relative; left: 70px;">
<asp:GridView ID="gvChildGrid" runat="server" AutoGenerateColumns="false" Width="250px" HeaderStyle-BackColor="Chocolate" HeaderStyle-HorizontalAlign="Center" HeaderStyle-VerticalAlign="Middle" PagerStyle-HorizontalAlign="Center" PagerStyle-VerticalAlign="Middle" RowStyle-HorizontalAlign="Center" RowStyle-VerticalAlign="Middle">
<Columns>
<asp:TemplateField HeaderText="Quantity">
<ItemTemplate>
<asp:Label ID="lblqty" runat="server" Text='<%#Eval("quantity") %>'> </asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Rate">
<ItemTemplate>
<asp:Label ID="lblrate" runat="server" Text='<%#Eval("rate") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</td>
</tr>
</ItemTemplate>
</asp:TemplateField>
<%--child grid over--%>
</Columns>
<FooterStyle BackColor="#A55129" ForeColor="White" Font-Bold="True" />
<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
</asp:GridView>
Default.aspx.CS
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
con.Open();
GridView gv = (GridView)e.Row.FindControl("gvChildGrid");
HiddenField id = (HiddenField)e.Row.FindControl("HiddenField1");
SqlDataAdapter da = new SqlDataAdapter("select quantity,rate from v_rate2 where pid=" + id.Value, cn);
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();
gv.DataSource = dt;
gv.DataBind();
}
}