听棠.NET

基于.NET的持久层SmartPersistenceLayer
免费职业锚定位测评
免费职业性格心理测评
posts - 244, comments - 10189, trackbacks - 104, articles - 5
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

轻松实现UltraWebGrid中的分页控制

Posted on 2005-03-10 12:57 听棠.NET 阅读(4072) 评论(27)  编辑 收藏 所属分类: NetAdvantage专区

大家在使用Grid时,总是报怨Grid的分页功能太弱,不能满足自己的需要,这在MS的DataGrid与NetAdvantage的2004vol3之前的版本都这样,Grid总是要求我们按它的要求进行显示与操作,从NetAdvantage 2004 vol 3开始,UltraWebGrid在分页显示上做了不少加强,我就简单介绍一下,我是如何使用的。
 我想实现的效果图:
 

  其实也是很简单,就是想在左面的地方,显示一些自定义的信息。

 开始吧:
1)拖个UltraWebGrid到界面上,然后后台进行数据绑定我就不说了,大家有自己的方式。
2)套用一种格式
     右击UltraWebGrid,选择Quick Design,然后在弹出窗口中挑选自己喜欢的模板(这跟MS的DataGrid差不多了): 记住要点击:Apply Preset才能生效的。


3)定义分页属性
  UltraWebGrid的分页方式很多,我们展开DisplayLayout->Pager属性,如图:

 设置AllowPaging=True; //这样就可以看到分页了
 我们采用QuickPages的StyleMode,设置QuickPages=4,这是说明,界面上显示为“当前面的前后四个分页数”。
 然后设置我们的Pattern,这个模板就是用来自定义显示效果的,在这个Partern中,提供了一些欲定义的域:
 
我想,大家一看英文就知道什么意思了吧。
为了实现效果图中的样式,我定义为:

<table width=100%><tr><td align=left>页码:[currentpageindex]/[pagecount] 每页:[pagesize]</td><td align=right>[default]<td></tr></table>

[default]最好一定要啊。它是随着不同的分页模式显示不同的方式。

[page:1:第一页]:象这样的话,分页数的1分变成“第一页”的字样,我还没有发现此功能怎么使用比较好。

在这里最让我失望的就是没有RecordCount记录数,我想要实现这个,得用后台的代码自动添加了。
好了,方法就是这么简单,你想定义成什么样,就定义成什么样吧。

4)分页代码实现:
 分页的代码是非常简单的,给UltraWebGrid添加PageIndexChange事件:

private void UltraWebGrid2_PageIndexChanged(object sender, Infragistics.WebUI.UltraWebGrid.PageEventArgs e)
        
{
            
this.UltraWebGrid2.DisplayLayout.Pager.CurrentPageIndex=e.NewPageIndex;
            
this.UltraWebGrid2.DataBind();
        }

好了,一切都好了。当然,你完全可做的更漂亮一些。

我是非常不推荐使用什么第三方的分页控件的,那些控件与Grid的整合都不怎么好,除非你已经用习惯了。
而且第三方的分页控件都是强调一个“高性能”分页的概念,关于这个的必要性,我也讨论过了,必要性很小。请参考:请讨论一下高性能分页的必要性!
而Grid自带的分页,可以非常轻松实现,集成也是最好的。

Feedback

#1楼    回复  引用    

2005-03-25 13:32 by 极速麻醉 [未注册用户]
真的不错!以后再也不用别人的分页控件了、有些分页控件写的功能却是很强大、不过就是在和dataGrid结合起来用时有些麻烦。

#2楼    回复  引用    

2005-03-28 17:43 by zy20476 [未注册用户]
我选择"选择Quick Design"时出现如下错误"指定的转换无效"
如何解决?谢谢

#3楼 [楼主]   回复  引用  查看    

2005-03-28 21:22 by 听棠.NET      
这个情况我也遇到过,不知道是什么原因引起的,重装一下控件就可以解决。

#4楼    回复  引用    

2005-03-29 08:00 by zy20476 [未注册用户]
是重新安装软件吗?

#5楼    回复  引用    

2005-03-30 11:54 by floe [未注册用户]
设计系统时应该首先考虑如何避免分页,毕竟多数时候分页的数据结果都是无用的
其次还是必须研究分页的高性能实现,因为分页在不少时候是必须的,系统不可能设计得那么完美,而且实际运行中会有设计师预料不到的情况

#6楼    回复  引用    

2005-03-30 11:55 by floe [未注册用户]
设计系统时应该首先考虑如何避免分页,毕竟多数时候分页的数据结果都是无用的
其次还是必须研究分页的高性能实现,因为分页在不少时候是必须的,系统不可能设计得那么完美,而且实际运行中会有设计师预料不到的情况

#7楼    回复  引用    

2005-04-16 20:11 by yghua8 [未注册用户]
UltraWebGrid如何实现如下分页功能:
1、显示出信息——记录数?
2、显示分页按钮:首页、前页、后页、末页
3、显示一个textbox和一按钮,用户在textbox中录入页数后单击按钮即跳转到相应页面。
敬请听棠.net指教,谢谢!

#8楼    回复  引用    

2005-05-19 16:21 by sunlight [未注册用户]
我觉得现实中的数据一般都是成千上万的,不可能不考虑“高性能”分页;还有就是如果上面的页码超出Grid下面的分页栏的显示范围,不知楼主有没有考虑其他的分页方式,比如现在论坛很流行的智能分页等等

#9楼    回复  引用    

2005-06-02 20:04 by rui.star@126.com [未注册用户]
你说:"我是非常不推荐使用什么第三方的分页控件的,那些控件与Grid的整合都不怎么好"
我不敢苟同.分页控件做的,恰恰是把分页逻辑与显示逻辑分开,这样的系统提高了内聚性,比如对DATAGRID的分页和DATALIST的分页,通过分页控件可以提供完全一致的分页形态.其次,与分页控件配合使用的高效分页方法,也是必须的。否则,你有两种途径:要么把数据集放到VIEWSTATE里,这样数据库是轻松了,可是页面变的非常庞大,刷新之间很慢。要么每次都取所有数据过来,这样数据库会累死。没见过C/S结构的程序分页的,原因就是不考虑INTERNET速度问题,B/S是必须高效分页的。

#10楼    回复  引用    

2005-10-26 21:06 by chenhaoying [未注册用户]
好象这个webgrid的页索引是从1开始的。
我用
this.UltraWebGrid2.DisplayLayout.Pager.CurrentPageIndex=0;没看到数据,用
this.UltraWebGrid2.DisplayLayout.Pager.CurrentPageIndex=1;才看到数据。

#11楼    回复  引用    

2005-12-18 16:19 by guowushi [未注册用户]
将this.UltraWebGrid2.DataBind(); 注释掉才能分页啊.而且页马好象不对,

我的UltraWebGrid2属性设置是在Page_onload中写的,如下
oleDbConnection1.ConnectionString="Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Server.MapPath("djks0304.mdb");
oleDbConnection1.Open();
oleDbCommand1.CommandText="Select * from students";
oleDbCommand1.Connection= oleDbConnection1;
R1=oleDbCommand1.ExecuteReader();
UltraWebGrid1.DataSource=R1;
UltraWebGrid1.DataMember="student";
UltraWebGrid1.DisplayLayout.Pager.AllowPaging=true;
UltraWebGrid1.DisplayLayout.Pager.QuickPages=4;
UltraWebGrid1.DisplayLayout.Pager.PageSize=10;
//UltraWebGrid1.DisplayLayout.Pager.StyleMode=""
UltraWebGrid1.DisplayLayout.Pager.Pattern="<table width=100%><tr><td align=left>页码:[currentpageindex]/[pagecount] 每页:[pagesize]</td><td align=right>[default]<td></tr></table>";
UltraWebGrid1.DataBind();

#12楼    回复  引用  查看    

2005-12-19 11:06 by haizheng      
请问如何实现导出excel时指定一个表名和生成时间呢?

#13楼    回复  引用  查看    

2005-12-29 15:03 by zkxp      
刚装上了,可怎么用啊。启动VS2003后看不到UltraWebGrid在哪拖出来的啊。

#14楼    回复  引用    

2006-03-16 10:41 by yyuer [未注册用户]
c/s就不必使用分页吗,如何设置呢?

#15楼    回复  引用    

2006-03-17 15:02 by uuu [未注册用户]
private void UltraWebGrid2_PageIndexChanged(object sender, Infragistics.WebUI.UltraWebGrid.PageEventArgs e)
{
this.UltraWebGrid2.DisplayLayout.Pager.CurrentPageIndex=e.NewPageIndex;
this.UltraWebGrid2.DataBind();
}
为什么不能进行分页啊??

#16楼    回复  引用    

2006-05-04 15:06 by 泉 [未注册用户]
我如何为UltraWebGrid2动态的写行的的单击事件

#17楼    回复  引用  查看    

2006-05-24 15:28 by 尧尧      
@泉
控件里面有单击事件的CLICK不就行了?

#18楼    回复  引用  查看    

2006-05-24 15:28 by 尧尧      
@uuu
this.UltraWebGrid2.DataBind(); 这句之前还需要绑定一下DATATABLE

#19楼    回复  引用  查看    

2006-05-24 15:30 by 尧尧      
@zkxp
控件安装好了,在工具拦里回用的,如果没有的话,还需要重新运行Create NetAdvantage Visual Studio Toolbox Tab(你安装控件的程序里有的)

#20楼    回复  引用  查看    

2006-05-24 15:32 by 尧尧      
@haizheng
导出EXCEL ,请看http://zjy.cnblogs.com/archive/2006/05/18/402991.html(Table导出为xls,doc,txt,htm方法 )

#21楼    回复  引用    

2006-07-03 23:31 by aasss [未注册用户]
当我在某个自定义列中设置了isbound属性为true,basecolumnna

me属性设为数据库中的某一个子段名后,用代码设置了datasource,也做了数

据绑定,但就是显示不出自定义的列,以及列中的数据。此时我已把autoGenera

teColumns属性设为false。
不知哪位大侠能帮帮我,不胜感激!
http://topic.csdn.net/t/20050113/06/3721250.html

#22楼    回复  引用    

2006-11-29 14:38 by judy[匿名] [未注册用户]
我把UltraWebGrid的AllowRowNumberingDefalut属性设置成Continuons后,Grid右侧就出现了每条记录的行号,可是那个字太大了,怎么样能够调节那个行号字体大小和对齐方式呢?

#23楼    回复  引用    

2007-01-17 16:05 by whb [未注册用户]
谢谢

#24楼    回复  引用    

2007-04-24 21:25 by lonyer [未注册用户]
我试过了,不用UltraWebGrid2_PageIndexChanged事件,也可以做到分页啊,怎么回事?

#25楼    回复  引用    

2007-06-08 09:39 by nunchakus [未注册用户]
UltraWebGrid2_PageIndexChanged 加了这个事件,以后,没有反应,数据还是只显示第一页

#26楼    回复  引用    

2007-10-16 09:29 by eric-zhang [未注册用户]
把UltraWebGrid2_PageIndexChanged事件中的DataBind()删掉,前面已经绑定过了

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2005-03-10 13:02 编辑过


相关链接: