如题,我在datagrid打印时候,找了个类,但是如果列的内容太长不能够显示,谁有没有超过列长度就换行的打印类啊??谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    网上找的..

     public string DGPrint(DataGrid dg)
            {
                int rows = dg.Items.Count;
                int col = dg.Columns.Count;
                StringBuilder sb = new StringBuilder();
                string colHeaders = "<html><body>" +
        "<object ID='WebBrowser' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'VIEWASTEXT></object>"
        + "<table border=1><tr>";
                for (int i = 0; i < col; i++)
                {
                    colHeaders = "<td>" +dg.Columns[i].HeaderText.ToString().Trim() + "</td>";
                }
                colHeaders += "</tr>";
                sb.Append(colHeaders);            for (int i = 0; i < rows; i++)
                {
                    sb.Append("<tr>");
                    for (int j = 0; j < col; j++)
                    {
                        sb.Append("<td>");
                        sb.Append(dg.Items[i].Cells[j].Text.ToString().Trim());
                        sb.Append("</td>");
                    }
                    sb.Append("</tr>");
                }
                sb.Append("</table></body></html>");
                colHeaders = sb.ToString();
                colHeaders += "<script languge='javascript'>WebBrowser.ExecWB(7,1); window.opener=null;window.close();</script>";
                return (colHeaders);
            }
      

  2.   

    另外:
    如果是web下打印.你可以控制只打印你的DataGrid部分.也就是说你的datagrid显示成什么样.打印出来就会是什么样
    可以用以下代码:<script language="javascript" type ="text/javascript">
    function preview()
    {
    bdhtml=window.document.body.innerHTML;
    sprnstr="<!--startprint-->";
    eprnstr="<!--endprint-->";
    prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);
    prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));
    window.document.body.innerHTML=prnhtml;
    window.print();
    }
    function winClose()
    {
     window.close();
    }
    </script>其中需要在你的grid开始与结束加上下边内容:
    <!--startprint-->
    <asp:datagrid...></...>
    <!--endprint-->
      

  3.   

    private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
            {
                Pen blackPen = new Pen(Color.Black, 3);
                e.Graphics.DrawString(List.Text, new Font("Monotype Corsiva", 50, FontStyle.Italic),     Brushes.Black, 30, 30);
                e.Graphics.DrawRectangle(blackPen, 20, 20, 300, 200);
            }
            private void button1_Click(object sender, EventArgs e)
            {
                printDocument1.DefaultPageSettings.Landscape = true;
                printDocument1.Print();
            }