[此贴作宣传博客用]JCCRepeaterBeta1.0说明--Repeater的加强控件 ,花了两天时间做了这么一个东东,有很多不完善的地方,希望大家帮忙解决一些疑问,谢谢!源码在博客上,宣传博客用:见 http://blog.csdn.net/JavaDianNet/
那里字体调整的会好些JCCRepeaterBeta1.0说明--Repeater的加强控件 
一、功能说明
主要是针对System.Web.UI.WebControls.Repeater加入了分页功能
 
具体说明:
1、保留repeater中HeaderTemplate , ItemTemplate, FooterTemplate的功能
2、给定SQL语句,排序字段,每页的记录数:即可根据从后台提取所需的记录。
(分别对应属性:SQL , OrderFld,RecordCountPerPage)
 
3、封装了浏览条:
首页 上页 1 2 3 4 5 下页 末页 (EditBox用于输入跳转页数)
A、可设置浏览条的显示位置:上面,下面,上下同时显示
对应属性(NavPos)
B、可设置浏览条的显示方向:左边,右边
对应属性(NavAlign)
C、可设置中间显示的页数的个数(如上述为5,可运态设置)
对应属性(BarIndex)
D、脚本验证 “跳转页数编辑框” 的合法性,只能为正整数
 
 
 
二、实现说明
1、自定义控件,继承自Repeater
2、分页实现,拼SQL语句,根据三个属性:SQL , OrderFld,RecordCountPerPage
              string sqlExec = @"select * 
                                     from 
                                     (
                                          select top " + (end-begin+1) + @" * from 
                                          (
                                               select top " + end + @" * 
                                               from 
                                               (
                                                   select * from stu
                                               ) as alias1 
                                               order by " + this.OrderFld + @" asc
                                          ) as alias2
                                          order by " + this.OrderFld + @" desc
                                     ) as   alias3 
                                                        order by " + this.OrderFld ;
三、疑问
1、跨不同类型的数据库?
数据库的连接目前写死,如果要跨不同类型的数据库,只有在相应位置用if…else..实现,使用针对相应类型的数据库的SQL来实现,这违反了设计模式不知道如何实现。
 
2、分页的实现
是否有效率更高的实现方式?
 
3、如何能做到在外部对浏览条进行样式控件
如果以属性方式提供出来则要加N多属性,@!#$#^&^%&^%
 
4、如何在子类中隐藏父类的属性?
此控件抛弃了repeater中的datasource属性,如何将父类的属性在子类中隐藏?用private override Datasource语法通不过

解决方案 »

  1.   

    三、疑问
    1、跨不同类型的数据库?
    数据库的连接目前写死,如果要跨不同类型的数据库,只有在相应位置用if…else..实现,使用针对相应类型的数据库的SQL来实现,这违反了设计模式不知道如何实现。
     
    2、分页的实现
    是否有效率更高的实现方式?
     
    3、如何能做到在外部对浏览条进行样式控件
    如果以属性方式提供出来则要加N多属性,@!#$#^&^%&^%
     
    4、如何在子类中隐藏父类的属性?
    此控件抛弃了repeater中的datasource属性,如何将父类的属性在子类中隐藏?用private override Datasource语法通不过
      

  2.   

    我觉得这样做是牺牲了控件的可复用性和增加了耦合度。UI控件负责的就是UI,数据就应该由DataSource负责,或者由DataSourceID指定的DataSource控件负责(ASP.NET 2.0),数据如果需要分页也应该由它们负责,而不应该由UI控件负责。如果你既需要增加Repeater的分页功能,又需要对某种特定数据库进行分页优化,就应该分开来做。Repeater就是Repeater,仅仅负责UI部分。另外再封装一个增强型的可作为DataSource的类型,或者增强型的DataSource控件,用于优化分页。