* Copyright (C) 2012 明振居士 版权没有,任意拷贝及使用,但对使用造成的任何后果不负任何责任,互相开源影响,共同进步

ireenter 2012-02-24 01:57:34
DataGridViewEx的最新版本,增加了10、11、12重要三个功能,修改了导出及打印的深层bug,共享给大家全部源码及样例。
下载地址:http://download.csdn.net/detail/ireenter/4086911


/****************************************************************************************************
* Copyright (C) 2012 明振居士 版权没有,任意拷贝及使用,但对使用造成的任何后果不负任何责任,互相开源影响,共同进步
* 文 件 名:DataGridViewEx.cs
* 创 建 人:明振居士
* Email:nzj.163@163.com qq:342155124
* 创建时间:2010-06-01
* 最后修改时间:2012.2.24 增加了汇总信息的自定义控制属性,参见功能描述12
* 2012.2.23 修改了过多列时父标题不显示的问题,重新写了算法,修改了标题头重叠及不能换行的问题,参见说明11.
* 2012-1-19 增加第10条所示的功能;修改了列头超过26列的错误,导出excel为数组方式,速度更快,导出的单元格设置为文本格式。
* 标 题:用户自定义的DataGridView控件
* 功能描述:扩展DataGridView控件功能
* 扩展功能:
* 1、搜索Search(); 有两个同明方法,参数不同 F3为快捷键继续向下搜索
* 2、用TreeView HeadSource 来设置复杂的标题样式,如果某个节点对应的显示列隐藏,请将该节点Tag设置为hide,隐藏列的排列位置与绑定数据元列位置对应,树叶节点的顺序需要与结果集的列顺序一致
* 3、通过反射导出Excel,无需引用com组件,方法ExportExcel() ,不受列数的限制,表头同样可以导出,AutoFit属性设置导出excel后是否自动调整单元格宽度
* 导出内容支持自定义的:Title List<string> Header List<string> Footer,支持在设计时值的设定,窗口关闭时Excel资源自动彻底释放
* 4、可以自己任意设定那些列显示及不显示,通过调用方法SetColumnVisible()实现。
* 5、设置列标题SetHeader(),设置列永远可见AlwaysShowCols(),设置列暂时不可见HideCols()
* 注意,当使用了TreeView作为复杂Header时,不要使用本方法,Header显示的内容根据treeview内容而显示
* 6、列宽度及顺序的保存SaveGridView(),加载LoadGridView()
* 7、支持所见即所得的打印功能,举例如下
* private void button5_Click(object sender, EventArgs e)
{
DGVPrinter printer = new DGVPrinter();
printer.PrintPreviewDataGridView(DataGridViewEx1);
}
* 8、自定义合并行与列,行合并用 MergeRowColumn 属性,列合并用MergeColumnNames属性,都可以定义多个列
* 9、行标号的设置 bool ShowRowNumber;
* 10、增加最后一行的汇总行,支持列的聚合函数,参见http://msdn.microsoft.com/zh-cn/library/system.data.datacolumn.expression(v=VS.100).aspx
* 假设对id列显示“合计”字符,avgPrice进行平均值,total列显示合计,则对ComputeColumns属性增加三行内容:id,合计:;avgPrice,Avg(avgPrice);total,Sum(total)
* 如果需要对值进行格式控制,请实现beforeShow事件
* 增加了导出和打印对应的支持,所见即所得的对齐方应用于式导出及打印。
* 11、列标题头自动换行,默认设置为每个列标题头行高为22,如果设置的字体更大,将自动进行计算。如果需要多行显示,请根据需要调节ColumnHeaderHeight属性值,
* 其估算方法为预计的标题头层数乘以22,或层数乘以设置的字体高度。
* 12、针对第10条功能,增加汇总信息的自定义控制属性,汇总字体SummaryFont,汇总字体颜色SummaryFontColor,汇总背景色SummaryBGColor,边框与整个表格边框一致
****************************************************************************************************/
...全文
606 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
信天牧 2013-09-12
  • 打赏
  • 举报
回复
我发现问题,   1 当没安装打印机或没启用打印服务时,  点打印,程序会卡死,然后就崩馈. 2 我的电脑安装的是office2007,点导出就报错. 还有没安装office软件时也会报错. 最好的办法是, 不要调office软件的接口.  电脑没安装office软件也能导致. 最后谢谢你的无私共享. 我觉得这种相互分享学习的精神也好. 日后我变得厉害了,也会这样去跟大家相互分享学习.   我们才会进步得更快
信天牧 2013-09-12
  • 打赏
  • 举报
回复
你好, 我有下载过了.也扣分了.  你的更新版,发一个给我好吗? 我的邮箱gogls@qq.com
Castiel丶Luo 2012-03-05
  • 打赏
  • 举报
回复
接分咯~
好东西
杨祺鹏 2012-03-05
  • 打赏
  • 举报
回复
强烈建议楼主放到github上面去。。csdn还要分的。。
吹风的兔子 2012-03-01
  • 打赏
  • 举报
回复
带着 筲箕 来接分了.....
ireenter 2012-02-29
  • 打赏
  • 举报
回复
两个DataGridView和底部增加一个panel差不多,处理滚动条也不容易,让两个DataGridView叠加起来,总是感觉不爽。
qldsrx 2012-02-28
  • 打赏
  • 举报
回复
写错,手快了,最后一行"WCF"改为"WPF"
qldsrx 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 ireenter 的回复:]
能发现bug就好改,至于summary行固定,我确实没有更好的方案了,希望大家给提供好的方案。
[/Quote]
有人用两个DataGridView拼接的方式实现了这种效果,实际效果还是很好的,有立体感。上面的DataGridView不带汇总行,下面的DataGridView只有一行(固定),提供汇总行功能,颜色和字体可以突出下。
这种方式要处理好横向滚动条同步的问题,还有列位置改变的同步问题,要自己在对应事件里设置(要禁用自带的滚动条,外部添加滚动条)。要实现这些外部添加,就必须使用UserControl作为容器,包含多个控件。
另外如果是WCF开发,将容易很多,因为WCF非常适合定制开发各类控件。
ireenter 2012-02-28
  • 打赏
  • 举报
回复
能发现bug就好改,至于summary行固定,我确实没有更好的方案了,希望大家给提供好的方案。
cnwin 2012-02-27
  • 打赏
  • 举报
回复
楼主创意不错.
ireenter 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 qldsrx 的回复:]

已经初步看过代码,测试后发现,该代码问题很多,最多只能研究,不能在项目中使用。
问题例举:
一、导出Excel报错,本机安装过OFFICE2010,按理说是不应该有问题的,但是错误提示为“调用目标发生异常……”,这里需要修改报错方式,显示内部错误信息(或者完整错误堆栈)才能看到问题的根源。
二、打印报错,当本机未启动打印服务或未安装打印机时,肯定是会出错的,但是程序未将错误捕获,直接程序崩……
[/Quote]

说的不错,前三个问题已经修正了,等下次发布最新的吧,也修改了另外一处bug。有下载过的可以直接找我要最新的,csdn不能更新源码。
第四个问题我暂时没有好解决方案,希望能给个很好的建议。
至于能不能在项目中应用,那还是自己评估了,套用那句话,不管你敢不敢用,反正我是用了。
哥本哈根 2012-02-27
  • 打赏
  • 举报
回复
多谢分享
有bug大家一起解决
Joychow 2012-02-27
  • 打赏
  • 举报
回复
分数很高。。来凑热闹
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 ireenter 的回复:]

引用 11 楼 qldsrx 的回复:

已经初步看过代码,测试后发现,该代码问题很多,最多只能研究,不能在项目中使用。
问题例举:
一、导出Excel报错,本机安装过OFFICE2010,按理说是不应该有问题的,但是错误提示为“调用目标发生异常……”,这里需要修改报错方式,显示内部错误信息(或者完整错误堆栈)才能看到问题的根源。
二、打印报错,当本机未启动打印服务或未安装打印机时,肯……
[/Quote]

dataGridview 实现汇总不是很现实的想像水晶报表一样强的话 那微软还会使用 水晶报表吗
muyi66 2012-02-26
  • 打赏
  • 举报
回复
标记保存
ireenter 2012-02-26
  • 打赏
  • 举报
回复
可以打印为pdf
  • 打赏
  • 举报
回复
有没有导出PDF?
独立级IT民工 2012-02-24
  • 打赏
  • 举报
回复
路过,强力支持,拿分
lesice 2012-02-24
  • 打赏
  • 举报
回复
感觉还不错,支持一下顺带接分!~
暖枫无敌 2012-02-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 qldsrx 的回复:]

已经初步看过代码,测试后发现,该代码问题很多,最多只能研究,不能在项目中使用。
问题例举:
一、导出Excel报错,本机安装过OFFICE2010,按理说是不应该有问题的,但是错误提示为“调用目标发生异常……”,这里需要修改报错方式,显示内部错误信息(或者完整错误堆栈)才能看到问题的根源。
二、打印报错,当本机未启动打印服务或未安装打印机时,肯定是会出错的,但是程序未将错误捕获,直接程序崩……
[/Quote]
是的,有些bug还是需要完善一下
加载更多回复(9)

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧