• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

DATAGRID打印问题?

supicbc 2004-10-30 05:00:02
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Printing;
using System.Data;
using System.Windows.Forms;

namespace TDSYS
{
/// <summary>
/// DataGridPrinter 的摘要说明。
/// </summary>

public class DataGridPrinter
{

private DataGrid dataGrid;
private PrintDocument printDocument;
private PageSetupDialog pageSetupDialog;
private PrintPreviewDialog printPreviewDialog;

public DataGridPrinter(DataGrid dataGrid)
{
this.dataGrid=dataGrid;
printDocument =new PrintDocument();
printDocument.PrintPage+=new PrintPageEventHandler(this.printDocument_PrintPage);
}
private void printDocument_PrintPage(object sender,System.Drawing.Printing.PrintPageEventArgs e)
{
int rowCount=0;
int colCount=0;
int x=0;
int y=0;
int rowGap=20;
int colGap=5;
int leftMargin=50;
Font font=new Font("Arial",10);
Font headingFont =new Font("Arial",11,FontStyle.Underline);
Font captionFont=new Font("Arial",10,FontStyle.Bold);
Brush brush=new SolidBrush(Color.Black);
string cellValue=dataGrid.DataSource.GetType().ToString();
cellValue="";
if(dataGrid.DataSource.GetType().ToString()=="System.Data.DataTable")
{
rowCount=((DataTable)dataGrid.DataSource).Rows.Count;
}
else if(dataGrid.DataSource.GetType().ToString()=="System.Collections.ArrayList")
{
rowCount=((ArrayList)dataGrid.DataSource).Count;
}
//colCount=dataGrid.TableStyles[0].GridColumnStyles.Count;
colCount=((DataTable)dataGrid.DataSource).Columns.Count ;

if(dataGrid.CaptionVisible)
{
y+=rowGap;
x=leftMargin;
e.Graphics.DrawString(dataGrid.CaptionText,captionFont,brush,x,y);
}
y+=rowGap;
x=leftMargin;
for(int j=0;j<colCount;j++)
{
if(dataGrid.TableStyles[0].GridColumnStyles[j].Width>0)
{
cellValue=dataGrid.TableStyles[0].GridColumnStyles[j].HeaderText;
e.Graphics.DrawString(cellValue,headingFont,brush,x,y);
x+=dataGrid.TableStyles[0].GridColumnStyles[j].Width+colGap;
}
}
for(int i=0;i<rowCount;i++)
{
x+=rowGap;
x=leftMargin;
for(int j=0;j<colCount;j++)
{
if(dataGrid.TableStyles[0].GridColumnStyles[j].Width>0)
{
cellValue=dataGrid[i,j].ToString();
e.Graphics.DrawString(cellValue,font,brush,x,y);
x+=dataGrid.TableStyles[0].GridColumnStyles[j].Width+colGap;
y=y+rowGap*(cellValue.Split(new char[] {'\r','\n'}).Length-1);
}
}
}
}

public PrintDocument GetPrintDocument()
{
return printDocument;
}

public void Print()
{
try
{
printPreviewDialog=new PrintPreviewDialog();
printPreviewDialog.Document=printDocument;
printPreviewDialog.ShowDialog();
}
catch(Exception e)
{
throw new Exception("Printer error."+e.Message);
}
}
}
}
为什么dataGrid.TableStyles[0].GridColumnStyles.Count,dataGrid.TableStyles[0].GridColumnStyles[j].Width>0会出现索引值问题?
经调试,rowCount/colCount的值正确。
...全文
145 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
happyjun2000 2004-11-01
一楼说的有理,细心调试一下
回复
zhouyong2052 2004-10-30
又见到这个问题了,好像刚刚有一个,我已经回答了
回复
swzlxm 2004-10-30
程序太长了.索引值出现问题肯定是长度不够,或不在其长度范围内,其它都不用看了.


单步调试就知分晓
回复
相关推荐
easyui datagrid 表格 打印
easyui datagrid表格打印,支持formatter格式化数据的打印,还原的最初datagrid 的表格数据
打印DataGrid数据实例
通过将DataGrid保存在.xps文件中,实现对DataGrid数据的打印
easyUI datagrid打印
easyUI datagrid打印datagrid先查询出数据,然后调用html文件做简单的报表打印。IE,Chrome,360浏览器都适用
EasyUi DataGrid打印问题处理
EasyUi DataGrid打印问题处理 EasyUi官方没有提供对Datagrid的打印的方法,所以需要我们自己写个方法来进行打印,如果使用windows自带的打印方法的话,会导致样式改变,打印出来的东西根本不能看。 以下我也是查...
datagrid 基于window和jqpring打印
打印datagrid列表数据,可以window.print,也可以用jqprint打印
EasyUiDatagrid打印
// printDatagrid 要打印datagrid //title 表格标题 function CreateFormPage(strPrintName, printDatagrid,title) { var tableString = '<table cellspacing="0" class="pb">'; tableString
WPF打印Datagrid表格
这里主要以类似图片格式方式打印,可以打印简单的DataGrid表格。方法如下:将表格加入到画布中,然后调用打印机,将画布直接打印出来,具体代码如下:单独用一个窗口放画布,将表格传进来,因为我的数据是绑定的...
easyui如何只打印当前datagrid的表格区域?
href="javascript:void(0)" id="pass_btn" onclick="print()" data-options="iconCls:'icon-doc-scan'" class="easyui-linkbutton" plain="true">打印当前页 没有什么方法只打印当前页面的表格数据?我只有这个按钮...
Flex实践——Datagrid打印预览与打印
NULL 博文链接:https://goby2008.iteye.com/blog/759345
DataGrid打印预览和打印
DataGrid打印预览和打印DataGrid打印预览和打印DataGrid打印预览和打印DataGrid打印预览和打印DataGrid打印预览和打印
.net C# DataGrid打印
重写DataGrid控件,用于打印DataGrid显示出的内容
easyui实现datagrid打印
调用WebBrowser 控件实现打印,但是会出现“浏览器已经阻止此站点用不安全方式使用ActiveX控件”的问题,可以参考如下这篇文章来解决:点击打开链接   网上找的模板: print.js文件 // strPrintName 打印任务...
WPF实现datagrid控件pdf格式的打印打印预览
datagrid的数据源来自数据库,目的是为了打印datagrid控件里面的数据。
DataGrid打印
这个程序可以进行datagrid所显示的内容的打印
VB源代码:ADO控件和DATAGrid数据打印报表.rar
VB中的ADO控件和DATAGrid数据打印报表的源代码,一个VB打印的例子,报表生成的例子,数据取自Access数据库,使用Ado将数据从Access读出后绑定在DataGrid报表中,在利用打印组件输出到打印机,效果截图如上所示。
VB中的ADO控件和DATAGrid数据打印报表
VB中的ADO控件和DATAGrid数据打印报表,一个VB打印的例子,报表生成的例子,数据取自Access数据库,使用Ado将数据从Access读出后绑定在DataGrid报表中,在利用打印组件输出到打印机,效果截图如上所示。
EasyUI的DataGrid 打印导出
// strPrintName 打印任务名// printDatagrid 要打印datagridfunction CreateFormPage(strPrintName, printDatagrid) { var tableString = '&lt;table cellspacing="0" class="pb"&gt...
datagrid打印程序
在外网下载的打印程序,看起来不错
EasyUiDatagrid 打印
// strPrintName 打印...// printDatagrid 要打印datagrid //title 表格标题 function CreateFormPage(strPrintName, printDatagrid,title) { var tableString = '<table cellspacing="0" class="pb">...
VB6用DataGrid分析显示单月数据并打印.rar
VB使用DataGrid分析显示数据:单月数据分析,可以显示单月统计报表、显示查询结果,并以图表方式显示、还可以选择要统计的字段,分类统计,指定查询条件的统计报表等。其实内核就是一个数据库检索程序,可以按不同的...
C# 同时打印多个DATAGRID
实现多个DATAGRID的联合打印以及打印预览
Easyui 中 datagrid 合并单元格的打印问题
最近在做一个项目,项目中要求将Easyui中的datagrid
DataGrid打印预览和打印.rar
DataGrid打印预览和打印.rar
jeasyui的dataGrid打印和导出,jeasyui报表 table转成excel 实例下载
--//打印--> function CreateFormPage(strPrintName, printDatagrid) { var tableString = '<div><table width="100%">;">; font-weight:bold;">;"> 年;"> 半年广东省房屋市政工程安全生产文明施工示范工地申报...
c#实现御览、打印datagrid中的数据
c#实现御览、打印datagrid中的数据
VS.NET打印思想与2003/5DataGrid、DataGridView及二维数据如ListView等终极打印实现
文章摘要通过核心的打印二维网格的程序,无论你用的是VS.NET2003还是2005,DataGrid、DataGridView网格、ListView、DataTable等等二维数据,通通打印。并可上溯到VB5和DBGrid/MSFlexGrid、VB6的MSHFlexGrid,实现二...
rtl8188eu_USB_linux.tar.gz
TP-LINK TL-WN725N V2 Linux 驱动安装
vs2013配置Qt5.7制作简单的音乐播放器
在VS2013配置Qt5.7制作的简单的音乐播放器,具有以下功能: 1.播放歌曲 2.添加歌曲 3.控制音量 4.换肤 5.本地搜索歌曲
24个带后台的小程序源码
24个带有后台的小程序源码下载,供大家交流学习(后台语言多种)
CListControl设置颜色
CListControl类派生,设置单元格颜色,丰富功能
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2004-10-30 05:00
社区公告

让您成为最强悍的C#开发者