20071015(新增单选列)
20071017更新(新增客户端设置列宽度)
20071021更新(新增自定义分页功能)
20071017更新(新增多选列DataKey支持)
20071105更新(修正DataTable无数据报错bug)
20071108更新(修正导出排序不兼容问题)
20071108更新(修正自定义分页显示方式,添加TextBox+Button方式)
20071108更新(修正自定义分页显示位置,可选头部和底部)
20071111更新(更改导出显示样式为下拉框)
20071119更新(修正了导出与分页的冲突)
- 如果您是一个初学者,您可以获得一个完全"所见即所得"的GridView控件,这个控件能帮助您自动完成很多常见功能,您无需任何代码
- 如果您是一个熟练的开发者,可每次使用的都是原生的GridView,您需要花费精力去记忆如何实现一些常见功能,如果您想从此摆脱这些痛苦的记忆,这个扩展的控件也是一个不错的选择
- 如果您是一个老鸟,您有自己扩展的GridView,您能熟练的编写自定义控件,那不妨对我的源代码进行一下改进,帮助我完成更多的功能扩展
现在很多版本的扩展GridView,我的这个在功能上不一定比别人的好,但相对简单易用,我争取的是0编码支持,也就是说您无须在后台编写任何代码即可实现丰富的功能,这个权当作我的这个扩展的一个特点吧,也许现在还不完善,所以希望大家的批评和指正。
这个控件的源码中附带一份十分详尽的使用说明,细致到每个功能的具体操作步骤,方便大家的使用。
如果您现在不想再继续看下面又臭又长的介绍,请直接下载源码文件和实例文件。
下载地址:
part1:/Files/jillzhang/jzlib.part01.rar
part2:/Files/jillzhang/jzlib.part02.rar
part3:/Files/jillzhang/jzlib.part03.rar
part4:/Files/jillzhang/jzlib.part04.rar
part5:/Files/jillzhang/jzlib.part05.rar
经过扩展的GridView天生就具备如下功能,而且这些功能您基本上可以实现0代码全自动实现,这样能提高您的开发效率,免得天天加班
- 全自动分页支持,无须任何代码,不局限数据绑定类型。
- 全自动双向排序,有排序图片和文本提示。
- 七十二变(天生具备无乱码word,excel,pdf导出功能)。
- 全自动多选列,仍是0代码支持。
- 全自动序号列。
- 变色龙(鼠标经过行背景颜色改变),无须任何代码。
- 如影随形术(固定表头)。
- 偷梁换柱(长字符串截断…替换显示)。
这个扩展控件就像哪吒一样,天具神力。使用它您能够大幅度提高开发效率,让您抽出更多时间做更有意义的事情。系统截图:
功能介绍和使用简介
全自动分页支持 
功能说明: GridView支持分页,但需要写一些代码,对于初学者和专业开发人员的工作效率都有影响,本功能可以实现通过简单设置,可实现0代码全自动分页。
使用说明: 使用该功能无需添加任何代码,只需要在设计视图中设置即可。步骤如下: 打开GridView的属性窗口,找到"jillzhang扩展"类别在该类别下找到CustomPage属性设置,点击,设置SelfMotion为true。
全自动双向排序功能
功能说明:GridView默认支持的是单向排序,而且当绑定不是通过指定DataSourceID的时候,必须通过编码(Sortting事件)来实现,比较麻烦,此功能就是为了解决这个问题,当数据源为DataTable或者DataSet时,只需简单的配置即可自动完成排序功能。
使用说明:使用该功能无需添加任何代码,只需要在设计视图中设置即可。步骤如下:打开GridView的属性窗口,找到"jillzhang扩展"类别,在该类别下找到AutoSortingSetting属性设置,点击,设置AutoSort为true。
变色龙(鼠标经过更改行颜色)
功能介绍
鼠标经过更改行颜色是指当GridView呈现给用户的时候,当鼠标经过数据行时,该行会自动更改颜色,以增加醒目效果。
使用说明:使用该功能无需添加任何代码,只需要在设计视图中设置即可。步骤如下:打开GridView的属性窗口,找到"jillzhang扩展"类别在该类别下找到MouseBehavior属性设置,点击,设置Support为true,选择一种鼠标经过时的颜色即可。
-
七十二变(天生具备无乱码word,excel,pdf导出功能)
功能介绍 :无乱码导出excel,word与pdf,只需要简单的设置即可出现工具条,点击工具栏中按钮可导出到上述文件,配置灵活,简单易用,支持列刷选,加入了pdf格式
导出。
使用方法 :使用该功能无需添加任何代码,只需要在设计视图中设置即可。步骤如下:打开GridView的属性窗口,找到"jillzhang扩展"类别 在该类别下找到ExportBehavior属性设置,如果想显示或者隐藏工具栏设置Visible(true/false),工具栏可见之后,您可以单独设置导出word,excel,pdf和显示版权信息,默认显示版权信息,如果您应用于生产,可设置ShowCopyRight="false"。工具栏中每个按钮之间的间隔可以设置Sepeator来更改,其中通过ToolBoxStyle可以设置工具栏行的样式,比较灵活。
全自动多选列
功能介绍 : 很多时候我们需要使用多选列,比如批量删除,批量激活,批量更新的时候,可每次都需要添加一个多选列,非常麻烦,这里为您实现了0代码全自动多选列,只需简单一点,就实现了您平时花费大量时间和精力的工作。
使用说明: 使用该功能无需添加任何代码,只需要在设计视图中设置即可。步骤如下:打开GridView的属性窗口,找到"jillzhang扩展"类别,在该类别下找到CustomColumns属性,设置MutiChooseColumn的Visible为true,即可显示出CheckBox列了,Align可指定多选列的位置,Left是左边,Right显示在右边,设置Custome,然后指定Position可指定显示在第几列,Width指定列宽度,Priority指定在多个自定义列中的排序优先级,此值越小,越靠前。
全自动序号列
功能介绍 : 很多时候我们需要使用序号列,这里为您实现了0代码全自动序号列,只需简单一点,就实现了您平时花费大量时间和精力的工作。使用说明: 使用该功能无需添加任何代码,只需要在设计视图中设置即可。步骤如下:打开GridView的属性窗口,找到"jillzhang扩展"类别,在该类别下找到CustomColumns属性,设置NumberColumn的Visible为true,即可以显示出序号列了,Align可指定序号列的位置,Left是左边,Right显示在右边,设置Custome,然后指定Position可指定显示在第几列,Width指定列宽度,Priority指定在多个自定义列中的排序优先级,此值越小,越靠前。
如影随形术(固定表头)
功能介绍:当GridView不分页或者每页显示过多的时候,页头经常处于不可见,通过简单的设置,您可以让您的表头随时可见,而且无需任何代码。
使用说明:使用该功能无需添加任何代码,只需要在设计视图中设置即可。步骤如下:打开GridView的属性窗口,找到"jillzhang扩展"类别,在该类别下找到LockHeaderSetting属性,设置Support的Visible为true,就可以实现固定表头的功能了,设置false,就可以取消该功能,操作相当简单。
偷梁换柱(长字符内容截断显示)
功能介绍:绑定到GridView中的内容有时候比较长,我们又不想让它换行,此时可以通过简单的设置,来截取长字符串进行显示,显示固定长度,后面用...省 略,也是0代码支持。
使用说明:使用该功能无需添加任何代码,只需要在设计视图中设置即可。步骤如下:打开GridView的属性窗口,找到"jillzhang扩展"类别,在该类别下找到TimeLongStringSetting属性,设置Support为true,即可以打开此功能。MaxLength指示最大的字符串长度,超过这个长度将被省略,并用...替代。
代码和示例文件下载:
part1:/Files/jillzhang/jzlib.part01.rar
part2:/Files/jillzhang/jzlib.part02.rar
part3:/Files/jillzhang/jzlib.part03.rar
part4:/Files/jillzhang/jzlib.part04.rar
part5:/Files/jillzhang/jzlib.part05.rar
导出pdf的截图和导出文件:

/Files/jillzhang/exportedgvCA8PNTW2.pdf
20071015新增功能
单选列
功能介绍:
有的时候,我们需要选择GridView中的一行数据,此时需要用到单选列,此功能帮助您实现一个0代码的单选列,您只需要简单的配置即可实现平时比较麻烦的单选功能。
使用方法 :
使用该功能无需添加任何代码,只需要在设计视图中设置即可。步骤如下:打开GridView的属性窗口,找到"jillzhang扩展"类别,在该类别下找到CustomColumns属性设置,设置RadionButtonColumn的Visible为true,既可以显示出单选列了,Align可指定序号列的位置,Left是左边,Right显示在右边,设置Custome,然后指定Position可指定显示在第几列,Width指定列宽度,Priority指定在多个自定义列中的排序优先级,此值越小,越靠前。
运行效果截图:

源程序和示例文件已于2007-10-15晚更新
20071015更新(新增客户端设置列宽度)
客户端更改列宽度
功能说明:
浏览列表的时候,有的列表内容过长,这时候,您可以拖动列框,来更改列的宽度,从而提高您的阅读效率
实现步骤:
使用该功能无需添加任何代码,只需要在设计视图中设置即可。步骤如下:打开GridView的属性窗口,找到"jillzhang扩展"类别在该类别下找到ResizeHeader属性设置,设置Support为true,既可以实现重置列宽的功能.
说明:只在ie7.0中测试通过,其中浏览器目前不保证兼容
目前没有实现排除列的功能,今天太困了,明天吧
截图:

自定义分页支持
有了自动分页,您可以实现0代码分页了,但天天看着原来的分页,太单调了,添加一个自定义分页功能,使用起来也是非常简单,无需任何代码,配置也是true/false,下面是实现效果图:
配置方法请参考实例项目
多选列DataKey支持
多选列原来可以返回选择行的DataItemIndex集合,网友朋友建议支持DataKey集合,希望对大家有用。
文件已于2007年10月21日晚更新
文件已于2007年10月24日晚更新,解决了导出时候与其他扩展功能冲突的问题。
文件已于2007年11月8日更新,解决了自定义分页的位置和显示问题。
最新截图

文件已于2007年11月11日更新,更改了导出显示样式为下拉框
最新解图

文件已于2007年11月19日更新,更改了导出与分页的冲突
posted @ 2007-10-14 21:29
Robin Zhang 阅读(10766)
评论(162) 编辑 收藏
发表评论
搂主:我还有一个想法,就是能不能我分页的具体实现可以给我们实现,但是还可以用你这个控件呢? 或者我们在绑定控件的时候只是提供当前页面的记录还有指定页记录总数,第几页等一些属性就可以自动分页,而没有性能的问题呢?
我这个想法是出于大数据量的时候我们直接利用你这个控件的话.我们每次只是想取出指定页面的记录.
@扬
可以的,用一个文本框来接受用户输入,然后点击转到这样的可以么?
搂主:我还有一个想法,就是能不能我分页的具体实现可以给我们实现,但是还可以用你这个控件呢? 或者我们在绑定控件的时候只是提供当前页面的记录还有指定页记录总数,第几页等一些属性就可以自动分页,而没有性能的问题呢?
我这个想法是出于大数据量的时候我们直接利用你这个控件的话.我们每次只是想取出指定页面的记录.
----------------------------------------------------------------如果这样的话,我担心控件越来越臃肿,就脱离了我设计这个扩展的初衷,我过段时间可能会扩展一些DataList和Repeater ,让其能满足您的性能要求。多谢您的支持和鼓励。
可以的,用一个文本框来接受用户输入,然后点击转到这样的可以么?
------------------
是的。
谢谢楼主了,这个东西估计很快可以做成组件拿去卖了..呵呵
@acelove
倒是没有这样的想法。
拿出来不被大家笑话,已经心满意足了。
仍然感谢您的夸奖
自定义分页我觉得没弄好
首先gridview自带的那个分页不应该显示!!
其次自定义分页应该可选放在header,footer,或者both
不过估计不现实gridview自带那个分页就很麻烦了,呵呵
--引用--------------------------------------------------
acelove: 自定义分页我觉得没弄好
首先gridview自带的那个分页不应该显示!!
其次自定义分页应该可选放在header,footer,或者both
不过估计不现实gridview自带那个分页就很麻烦了,呵呵
--------------------------------------------------------
同意上面这位的意见,请问楼主能不能根据这个意见进行改进啊!
@acelove
@liwei81730
多谢回复,您说的问题我会尽快加以更正。多谢
楼主,用你的控件将文本导出到EXCEL时,会出现自动套用科学计数法,但我其实只想要文本,另外还会出现如"1/1"文本在excel中自动转换为"1月1日".
请问你有没有什么好的办法解决这个问题?
期待你的回复和新的作品!!
请教楼主一个问题,我如何在将GridView导出到Excel或Word时,不将自动分页的那一行导出?谢谢!
@liwei81730
真的感谢您发现这个问题,添加自定义分页的时候忘记测试导出功能了,我会尽快将此问题更正
@liwei81730
我会尽快加以更正,多谢您的反馈
楼主,我试着自己解决了导出Excel时出现第一行分页工具栏情况
办法是在StringWriter输出时将第一行<tr>取消掉
不知道这个是不是一个好的方法,有没有没有考虑到的地方?
@liwei81730
不需要那样做的
做法和隐藏工具栏行一样
在导出的时候,设置不显示自定义分页行就可以了
@liwei81730
已经解决了导出与其他扩展冲突的问题。
望继续支持
楼主:我发现了一个bug
如果是降序排序的话,在导出excel或者word的时候会出现一个无法显示的图片。
当DATASOURCE为空时,DATABIND()绑定出错,希望更改。
@LONGDFDFDDDDD
好,非常感谢
@扬
正在实现中。。
楼主能不能实现用 SqlPager 来自定义分页??
已给你更正好
当DATASOURCE为空时,DATABIND()绑定出错问题
将原先的该为
row.Cells.count>0
解决
row.Cells.count>0 好像不行吧?
在空数据的时候会出现异常!改起来还是有点麻烦
楼主:
现在停止更新这个控件了?还是在酝酿更加大的更新?
期待把这个控件做得更加好。
@扬
近段时间,公司和家里事情比较多,一直没时间。
过段时间再做些修改。
非常抱歉
发现一个问题,是在asp.net\Controls\Exporters\ExportSetting.cs文件下的这段代码里
BaseFont bfChinese = BaseFont.CreateFont("C:\\WINDOWS\\Fonts\\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
按照作者的思维就是,该用户已经安装了这种字体,而没有考虑到没有安装该字体的用户,
请再加上一个判断,如果安装该字体的话,就可以生成PDF文件,如果没有安装的话,则提示用户安装,如果能给出下载地址和安装方法最好了~~呵呵
请问楼主,能不能将分页导航栏设置到GridView的下方?或者给定一个属性,可以在上方和下方都设置?
请问楼主,能不能将分页导航栏设置到GridView的下方?或者给定一个属性,可以在上方和下方都设置?
@@
这个你在代码那里自己修改一下就可以啦!默认是在第一行。你可以添加在最后一行呀
这个控件现在还不能用在项目上面!
你把table.Rows.AddAt(0, row);改为
table.Rows.AddAt(table.Rows.Count, row);就可以了!不过你也可以自己加上一个属性来判断。
楼主:
我有几个建议:
1.把所有的linkbutton改为ImageButton。而已图片是可以自己指定的。
2.如果把下拉列表改为TextBox输入然后点击GO在转移指定索引转移到指定页面
3.导出文件的几个按钮放到和分页同一行。或者可以指定位置。
4.分页可以自己实现分页事件。(这样子避免这个页面用你这个控件,其他页面因为性能问题使用其他的控件,导致样式不一致)
请问楼主,能不能在使用分页功能的同时去掉GridView自带的分页功能?
现在是两个分页工具条同时出现。
楼主:当列表是倒叙的时候到处word会出现一个不可以显示的图片。这个bug还没有解决
"C:\\WINDOWS\\Fonts\\simsun.ttc,1"
建议改为
Environment.GetFolderPath(Environment.SpecialFolder.System) + "\\..\\Fonts\\simsun.ttc,1"
我的系统没装在C盘,出了这个问题
@扬
多谢您一直的支持和帮助,问题已经修正
@Edwin Liu
我会尽快加以修正
建议加上以下实用功能
!、锁定指定列
2、指定网格显示大小后,溢出内容自动添加水平与重直滚动条
3、在工具栏上,添加一种操作方式,可以方便地隐藏指定的列(现在的方式是由程序后台指定,而大多是由使用者来决定哪些列是需要隐匿的),这在显示十多列以上的网格时很有用。
下拉导出有bug
1.点击下拉导出文件之后,在点击分页还是先激发导出事件
2.点击一次分页,下拉导出的选项多出4个选项
我昨天试了你的 8.偷梁换柱(长字符串截断…替换显示)和客户端更改列宽度。我就在考虑一个问题。如果我把这个功能给客户的话,他们肯定会提出一个要求:
可以设定列的显示宽度,如果超过指定宽度的话隐藏起来,当拉长列表的宽度的时候可以显出来。
不知道楼主是否能够实现这个功能呢?
要导出文件,不管是excel还是word等,先导出一遍,再按下页码数时,会重复出现导出对话框。这时如果再把导出文件的下拉框重置回到导出文件选项,再按下一页的页码后,导出文件的那个下拉框会重复出现那几个选项。
:)强烈支持楼主继续完善!
@@扬
@zjh1111111111
导出与分页的问题已经修正
多谢一直来的帮助
老大,我用VS2005无法打开下载的项目,提示说安装版本不支持该项目?如何才能在我的程序中调用这个控件呢?本人是菜鸟一个,还望指教啊。THX!
@camelsu
你的vs2005没有打sp1补丁
东西很实用,配合我的分页非常好
谢谢,一个小细节 "全选"按纽选择后innerhtml变为"全不选",建议改成"反选"或者其它两个字 这样表格就不会感觉跳了一下了
当进行
page.DataBind();出错,希望更正
这个要怎么用,楼主能不能给个DOC的使用说明啊~~
楼主,请教你一个问题
我在框架网页中导出GridView的时候,上层的框架接收到关闭IE的消息,我注意看你的代码中,确实是将http的响应限制在Current内的,这是为什么?
@jillzhang
比如说我在上层框架中做了控制,如果点击退出按钮,就会弹出一个对话框询问是否需要退出。
但现在我点击框架内的GridView导出按钮,也会弹出这个对话框。
所以我想问下楼主有没有什么好的办法解决这个问题。
不知我说明白没有:)
@liwei81730
是不是你浏览器设置的问题呢,我这里没有你说的问题,我们也用的是框架页上了,要不你给我截张图看看
用7-zip 就不用这么多压缩包了 可以压成1M的一个包 比rar少了3M
@CooS
多谢,我原来一直喜欢用rar,比较守旧,:)
想请教几个问题:
1.我用LZ的导出的功能时候要设置UnExportedColumns来屏蔽掉一些不要导出的列,但是我想屏蔽掉上方的导出按钮跟下方的分页按钮,还有单选列应该怎么设置呢。
2.我重写了OnRowCreated的事件,在里面增加了一个自己的分页,显示的时候都没有问题,但是只要增加了单选按钮那一列,分页的那行就会从右边多出来一列单元格,比如
单选列 字段1 字段2 字段3 字段4
1 A B 1 2
2 C D 3 4
1/2 << < > >>
博主超牛!
不过使用过程我有两个问题:
1、导出EXCEL/PDF/WORD时提示:类型“GridViewEx”的控件“GridViewEx1”必须放在具有 runat=server 的窗体标记内。
2、启用分页后,总页数总是显示为1.
环境:VS 2008+.NET 2.0+MSSQL2000+SqlDataSource
第一个问题
1)必须将重写VerifyRenderingInServerForm,如下
public override void VerifyRenderingInServerForm(Control control)
{
}
第一个问题搞定了:
在页面中添加
public override void VerifyRenderingInServerForm(Control control)
{
}
<%@ Page Language="C#" EnableEventValidation = "false" 。。。。。。。。。。。。。。%>
导出EXCEL好像是CVS格式吧? 会有吃“0”现象发生。
如果启用分页后,只能导出当前页的数据。
@小龙22
可以更改源代码,设置为cvs格式
导出的是全部的数据
导出PDF没问题,导出WORD和EXCEL时出错:
类型“GridViewEx”的控件“GridViewEx1”必须放在具有 runat=server 的窗体标记内
@『USEA』
在页面中添加
public override void VerifyRenderingInServerForm(Control control)
{
}
<%@ Page Language="C#" EnableEventValidation = "false" 。。。。。。。。。。。。。。%>
好像还有一个分页的问题:
页面第一次加载的时候,翻页导航显示有问题,共?页没有显示,下拉列表也没显示,当点击下一页之后,页面有回传时又显示正常了
我下载下来怎么不能用呢?5个RAR文件都下下来了
vs2005 打不开--------"此安装不支持该项目类型"
@『USEA』
是不是你的用法有问题呢
我这里是可以的
PdfExporter.cs中的
BaseFont bfChinese = BaseFont.CreateFont("C:\\WINDOWS\\Fonts\\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);改成下边这样,就可以适应操作系统了(自动获得操作系统字体路径)
//获得系统字体的目录
string SysPath = Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.System)).FullName + @"\Fonts";
BaseFont bfChinese = BaseFont.CreateFont(SysPath + "\\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
请问,是不是不支持用直接绑定到SqlDataSource,我发现用SqlDataSource后导出有问题,用DataTable就好了 。
@ASDFGH
是的,不支持SqlDataSource
请问楼主,我怎样可以像你那样(导出工具栏)在标准的gridview顶上另外建一条工具栏呢?
@hellolz
下载我的code,里面有相关代码,我一时间也想不周全了
请问博主,为什么我用的时候,页面pageload时就没有问题,但是点了查询按钮时,就会有个bug,查询的结果绑定时,分页的按钮都有问题,包括1页/1页,共条记录 [首页] [上一页] [下一页] [尾页] 转到等,都有些问题
主要的问题是这些键都不起作用的了,共有数据那里不显示首页上一页这些本来应该不能点击的按钮,也都可以点击了,很奇怪,请博主帮忙分析下原因,谢谢
@shkaizhi
你的使用方法有问题
我的那个和GridView的绑定方法不一样,不是设置DataSorce,然后DataBind,只是设置DataSetSoruce就可以
能否有个SetRadioItemValue()方法,用来设定那个单选框选定
好啊,好强啊。
不过分页能改成,或者增加一个url分页功能就非常好了。
例如:list_1.aspx,list_2.aspx 等等
哈哈
楼主,帮忙啊,用sqldatasource绑定下拉列表没值啊。。。
总页数也不对
楼主 辛苦了 你真强 我使用时还是有些地方不明白 方便请教吗?
你好!使用GridViewEx设置列为模板列后,取值是空值。
this.GridViewEx1.Rows[index].Cells[i].Text 为空字符串
谢谢楼主作了这么好的扩展功能,如果能加上双击转编辑功能就好了!
我在用的时候出现一个问题(不知是不是我程序的问题):我将控件放在一个UpdataPanel中,就无法导出Excel和Word了,但PDF是正常的,不知道是不是个Bug。
再次感谢!
还有两个要求,请楼主考虑一下是否有必要增强:显示光标行的时候能单击左键能不能转为选择为当前行;这个控件能不能也用上主题或SkinID,我试了好象是不管用的。
本人用VC写代码多年,ASP.NET却是刚学,可能上面的问题是我不懂造成了,请不吝赐教。