Hi bilalamjad,
Here i have created sample. Refer the below code. if you are appending script in the string builder then pass the 5th parameter to RegisterStartupScript as false. If you are passing as true then remove below two lines from the method print_single_grid.
sb.Append("<script type = 'text/javascript'>");
sb.Append("</script>");
HTML
<div>
<asp:GridView runat="server" ID="VendorGW" />
<br />
<asp:Button Text="Print" runat="server" OnClick="print_btn_Click" />
</div>
Code
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[3]
{
new DataColumn("Id", typeof(int)),
new DataColumn("Name", typeof(string)),
new DataColumn("Country",typeof(string))
});
dt.Rows.Add(1, "John Hammond", "United States");
dt.Rows.Add(2, "Mudassar Khan", "India");
dt.Rows.Add(3, "Suzanne Mathews", "France");
dt.Rows.Add(4, "Robert Schidner", "Russia");
VendorGW.DataSource = dt;
VendorGW.DataBind();
}
protected void print_btn_Click(object sender, EventArgs e)
{
Common com = new Common();
com.print_single_grid(VendorGW, this.Page);
}
public override void VerifyRenderingInServerForm(Control control)
{
/* Verifies that the control is rendered */
}
Common.cs
public void print_single_grid(GridView grid, Page page)
{
grid.PagerSettings.Visible = false;
grid.DataBind();
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
grid.RenderControl(hw);
string gridHTML = sw.ToString().Replace("\"", "'").Replace(System.Environment.NewLine, "");
StringBuilder sb = new StringBuilder();
sb.Append("<script type = 'text/javascript'>");
sb.Append("window.onload = new function(){");
sb.Append("var printWin = window.open('', '', 'left=0");
sb.Append(",top=0,width=1000,height=600,status=0');");
sb.Append("printWin.document.write(\"");
sb.Append(gridHTML);
sb.Append("\");");
sb.Append("printWin.document.close();");
sb.Append("printWin.focus();");
sb.Append("printWin.print();");
sb.Append("printWin.close();};");
sb.Append("</script>");
ScriptManager.RegisterStartupScript(page, this.GetType(), "key", sb.ToString(), false);
grid.PagerSettings.Visible = true;
grid.DataBind();
}
Screenshot