Im using a collapsable grid view. There are many records in gridview, each record consists of sub records. Now I want to print a particular record from my inner gridview.
Html
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript">
function Print(a) {
a.style.display = "none";
var row = a.parentNode.parentNode;
var printWin = window.open('', '', 'left=0", ",top=0,width=1000,height=600,status=0');
printWin.document.write(row.innerHTML);
printWin.document.close();
printWin.focus();
printWin.print();
printWin.close();
a.style.display = "block";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" GridLines="Both">
<Columns>
<asp:BoundField DataField="Item" ItemStyle-Width="100" />
<asp:BoundField DataField="Price" ItemStyle-Width="100" />
<asp:TemplateField>
<ItemTemplate>
<tr>
<td colspan="100%">
<div id='<%# Eval("ROLL_NO") %>' style="display: none; position: relative; left: 115px;" />
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Quantity" HeaderText="Quantity" ItemStyle-HorizontalAlign="Center"
HeaderStyle-Font-Bold="true" />
<asp:BoundField DataField="ProductName" HeaderText="ProductName" ItemStyle-HorizontalAlign="Center" />
<asp:BoundField DataField="PaidAmount" HeaderText="Paid Amount" ItemStyle-HorizontalAlign="Center" />
<asp:TemplateField>
<ItemTemplate>
<a href="javascript:;" id="linkref" onclick="Print(this)">Print</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
Code
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", 20);
dt.Rows.Add("Shirt", 22.5);
GridView1.DataSource = dt;
GridView1.DataBind();
DataTable dt1 = new DataTable();
dt1.Columns.AddRange(new DataColumn[2] { new DataColumn("Quantity"), new DataColumn("ProductName") });
dt1.Rows.Add("1", shirt);
dt1.Rows.Add("2", tshirt);
GridView2.DataSource = dt1;
GridView2.DataBind();
}
}