Click here to Skip to main content
15,884,010 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have a gridview which is binded to a pagerdatasource.I m facing problems in printing all rows of grid.When i try to print gridview it prints only the first page of grid.I m printing gridview from code behind.

i have tried the following
C#
protected void btnPrint_Click(object sender, EventArgs e)
    {

        GridView1.UseAccessibleHeader = true;
        GridView1.HeaderRow.TableSection = TableRowSection.TableHeader;
        GridView1.FooterRow.TableSection = TableRowSection.TableFooter;

        FillGrid();
        pds.AllowPaging = false;
        this.GridView1.ShowFooter = true;
        // GridView1.Attributes["style"] = "border-collapse:separate";
        foreach (GridViewRow row in GridView1.Rows)
        {
            //row.Attributes["style"] = "border-top-style:none; border-bottom-style:solid; border-left-style:none; border-right-style:none; border-color:Black;";
            if (row.RowIndex % 20 == 0 && row.RowIndex != 0)
            {
                row.Attributes["style"] = "page-break-after:always;";
            }
        }
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        GridView1.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(\"");
        string style = "<style type = 'text/css'>thead {display:table-header-group;} tfoot{display:table-footer-group;}</style>";
        sb.Append(style + gridHTML);
        sb.Append("\");");
        sb.Append("printWin.document.close();");
        sb.Append("printWin.focus();");
        sb.Append("printWin.print();");
        sb.Append("printWin.close();");
        sb.Append("};");
        sb.Append("</script>");
        ClientScript.RegisterStartupScript(this.GetType(), "GridPrint", sb.ToString());

        FillGrid();
        pds.AllowPaging = true;
        //GridView1.DataSource = pds;
        //GridView1.DataBind();
    }

But its not Printing all rows.Please help..
Posted
Updated 20-Feb-14 2:33am
v4

1 solution

 
Share this answer
 
Comments
pwavell 20-Feb-14 8:42am    
I have used this code previously.It works fine.But the problem here the gridview is binded to a pager datasource.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900