有用过打印datagrid的朋友吗。winform

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/3204/3204925.xml?temp=.5819818
      

  2.   

    我那个组件就是专门为打印DataGrid,DataTable等动态数据源写的,非常好用啊.
      

  3.   

    不能直接用print preview中的打印按钮。要用程式中的打印按钮。具体原因要考究vs.net printpreviewdialog的工作机制了。
      

  4.   

    直接使用CrystalReportView来显示就有这个问题,后来我把水晶报表导出为pdf格式,再用ie打开该pdf文件就正常了,而且还解决了打印问题,水晶报表的打印方法是用于服务器的,在客户端不行。下面函数实现了导出pdf或word文件并在ie中显示,其中CryReport是我做的水晶报表文件名,string OptionStr是操作字符,可选"Portable Document (PDF)"和"MS Word (DOC)"调用方式为ExportReport(水晶报表实例,操作字符)private void ExportReport(CryReport Report,string OptionStr)
    {

    string ExportPath;
    ExportPath = Request.PhysicalApplicationPath + "Exported\\";
    if (Directory.Exists(ExportPath) == false) Directory.CreateDirectory(Request.PhysicalApplicationPath + "Exported\\");    
    ReportDocument crReportDocument = (ReportDocument)Report;
    DiskFileDestinationOptions crDiskFileDestinationOptions = new DiskFileDestinationOptions();
    ExportOptions crExportOptions = crReportDocument.ExportOptions; switch(OptionStr)
    {
    case "Portable Document (PDF)":
    crDiskFileDestinationOptions.DiskFileName = ExportPath + "PortableDoc.pdf";
    crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
    crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
    crExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
    break;
    case "MS Word (DOC)":
    crDiskFileDestinationOptions.DiskFileName = ExportPath + "Word.doc";
    crExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
    crExportOptions.ExportFormatType = ExportFormatType.WordForWindows;
    crExportOptions.DestinationOptions = crDiskFileDestinationOptions;
    break;
    }

    try
    {
    // Export the report
    crReportDocument.Export();
    crReportDocument.Close();
    Response.ClearContent();
    Response.ClearHeaders();
    switch(OptionStr)
    {
    case "Portable Document (PDF)":
    Response.ContentType="application/pdf";
    Response.WriteFile(ExportPath + "PortableDoc.pdf");
    break;
    case "MS Word (DOC)": Response.ContentType="application/msword";
    Response.WriteFile(ExportPath + "Word.doc");
    break;
    }  Response.Flush();
    Response.Close();
    }
    catch (Exception err)
    {
    Response.Write("<BR>");
    Response.Write(err.Message.ToString());
    }
    }
      

  5.   

    没办法,只能先导到excel啦,问题解决