SqlPager最终版[附源码和示例程序](使用存储过程进行分页)

nbsp;     前面已经写了很多篇关于SqlPager的文章了,对于Sqlpager本身我就不再多说了!这次我算是我对SqlPager的最后改进了吧!
      主要的改进是在上一次修改了其样式表指定和数字分页的基础上进行的,主要修改的地方是分页的方式,原来一直是使用的select top 的分页,现在我改为了使用SQL存储过程分页了!主要是在使用原来那种分页方式的时候遇到了很多问题,最突出的一个问题就是无法使用飞关键字段排序,所以这次我对其进行了这个修改,相信通过这次的修改已经基本能够满足一般的需求了!
      在此我就不用贴出可具体的代码了,代码的会作为附件供需要使用的人下载!在此我只说明一些要注意的地方。在此我在此写出调用的方法,因为和以前比有点变动。
用于数据绑定的方法:( 新加了注释)
/// <summary>
        
/// 绑定数据
        
/// </summary>
        
/// <param name="SQL">SQL语句</param>

        private void BindGrid(string SQL)
        
{
            
//需要注意的一些问题
            /*
             * 1.排序只能有一个字段的排序 这里还可以优化,望大家改进
             * 2.这个参数 string SQL 如果其查询中有形如 like '%jj%'之类的含有单引号的,请把单引号换成 如 like ''%jj%'' 
             * 3.最后那个where条件必须加上,至于加什么自己根据需要写,如果没有条件的也必须写个条件,如主键>0之类的
             * 
*/

            
this.BindSqlPager(SqlPager1,LJHSqlPager2.SortMode.ASC ,"OrderID","OrderID",this.ConnectString,"DataGrid1",SQL,"("+SQL+")","*","OrderID>0");
        }
        
        
        
/// <summary>
        
/// 绑定SqlPager数据 存储过程的分页
        
/// </summary>
        
/// <param name="sqlPager">SqlPager控件ID</param>
        
/// <param name="sort">排序方式</param>
        
/// <param name="sortfied">排序字段</param>
        
/// <param name="FieldKey">关键字段(主键)</param>
        
/// <param name="ConnectString">数据库链接字符串</param>
        
/// <param name="ControlName">绑定的网格控件</param>
        
/// <param name="CommandText">SQL语句</param>
        
/// <param name="TableName">数据表表名(可以是复杂的查询)</param>
        
/// <param name="Fields">查询字段</param>
        
/// <param name="SqlCondition">Where条件</param>

        public void BindSqlPager(LJHSqlPager2.SqlPager sqlPager,LJHSqlPager2.SortMode sort,
            
string sortfied,string FieldKey,    string ConnectString,string ControlName,    string CommandText,
            
string TableName,string Fields,string SqlCondition)
        
{
            sqlPager.ConnectionString
=ConnectString;
            sqlPager.ControlToPaginate
=ControlName;
            sqlPager.SelectCommand
=CommandText;
            sqlPager.SortMode
=sort;
            sqlPager.FieldKey
=FieldKey;
            sqlPager.SortField
=sortfied;
            sqlPager.TableName
=TableName;
            sqlPager.Fields
=Fields;
            sqlPager.SQLCondition
=SqlCondition;
            sqlPager.DataBind();

        }


对此方法说明一点:(在调用方法的时候)
this.BindSqlPager2(this.SqlPager1,LJHSqlPager2.SortMode.DESC,this.GetOrderField(),"ListID",this.GetDbConnecString(),"dgComments",SQL,"("+SQL+")","*","ListID>0");
这里的SQL也就是 上面方法中的TableName参数,因为有时候我们的SQL比较复杂,所以表可能是一个比较复杂的SQL语句;如果只是一张表的查询,那么那里就知用写表名就可以了!

其他的我就不多说了,如果大家还有不清楚地可以留言或者联系我!本人晚上在上网,白天公司禁止上网!

源码下载地址(附存储过程):SqlPager.RAR
实在抱歉,里面的那个分页存储过程不是我在控件中使用的那个,在此向下载了的弟兄们表示歉意。
正确的存储过程:分页存储过程下载

应大家的要求,特写了个小Demo,数据库为SqlServer自带的Northwind
下载地址:Demo下载
Demo运行效果图:DEMO.gif
posted @ 2007-09-19 21:55 缘易姿姿 阅读(3851) 评论(29) 编辑 收藏

 回复 引用   
#1楼 2007-09-19 23:11 Astar1[未注册用户]
顶,!!本人下找这方面的资料呢,谢谢了。!!!!
 回复 引用   
#2楼 2007-09-20 09:23 fun[未注册用户]
怎样支持多个排序字段呢?
如 order by a, b desc

 回复 引用   
#3楼 2007-09-20 10:07 guohao[未注册用户]
非常好哦。。不过能不能上一个Demo范例来看看呢?给一些全面的感官了解
 回复 引用 查看   
#4楼 2007-09-20 10:20 聂锋      
啊。
 回复 引用 查看   
#5楼 2007-09-20 17:31 极地银狐.NET      
我8挂一下,觉得叫sqlpaging会好点....pager是传呼机的说.....
 回复 引用 查看   
#6楼[楼主] 2007-09-20 22:16 缘易姿姿      
@fun
sqlPager.TableName=TableName;
这个参数里面你可以先进行排序

 回复 引用   
#7楼 2007-09-21 12:25 lili[未注册用户]
请问有没有用vs2005做的分页?
这太老了吧?

 回复 引用   
#8楼 2007-09-21 19:46 缘易[未注册用户]
@lili
技术无所谓新旧!有源码的,要在2005里面用多简单!

 回复 引用   
#9楼 2007-10-23 16:43 夏文俊[未注册用户]
可以给我解释一下调用参数的意思吗?
有几个我不是很清楚!
this.GetOrderField()
"ListID"
this.GetDbConnecString()
"dgComments"
"("+SQL+")"
"*"
"ListID>0"

我的邮箱:Benjaguar@163.com

 回复 引用 查看   
#10楼[楼主] 2007-10-23 21:14 缘易姿姿      
@夏文俊
this.GetOrderField() 这个是用于排序的字段
"ListID" 这个是关键字字段
this.GetDbConnecString() 这个是数据库联接字符串
"dgComments" 这个是你数据绑定控件的ID
"("+SQL+")" 这个SQL是你表名,也可以是一个复杂的SQL查询
"*" 这个是显示的字段
"ListID>0" 这个是SQL的条件 相当于where ListID>0@夏文俊

 回复 引用   
#11楼 2007-10-24 15:24 夏文俊[未注册用户]
谢谢昨天给我解释的参数意思
今天我调用过拉 还是不行~ 会报错误!
能否给我个DEMO参照下~!
邮箱:Benjaguar@163.com
万分感谢!

 回复 引用 查看   
#12楼[楼主] 2007-10-24 21:18 缘易姿姿      
@夏文俊
可以

 回复 引用   
#13楼 2007-10-25 08:39 夏文俊[未注册用户]
谢谢你拉~!楼主~~!
今天在试试哦~

 回复 引用   
#14楼 2007-10-25 11:02 阿学[未注册用户]
非常不错的东西。
今天我也在研究 分页。我是用 datalist

但是使用起来有点麻烦。

所以我想做个控件。但是没做过。

所以找到了你这个。。。。希望有个 demo 出来。

再次感谢。

我的 emial 91kejian&gmail.com

 回复 引用 查看   
#15楼[楼主] 2007-10-25 23:02 缘易姿姿      
@阿学

今天比较有时间,特写了一个小Demo,希望对大家有所帮助!

 回复 引用 查看   
#16楼[楼主] 2007-10-25 23:04 缘易姿姿      
@阿学

这个很简单,代码只需要我写那几句就够了!而且性能很好!

 回复 引用   
#17楼 2007-11-30 11:01 学习中[未注册用户]
难道不能在gridview中使用吗
 回复 引用   
#18楼 2007-11-30 23:37 hermes[未注册用户]
@学习中
稍微改改就可以了,有源码的您可以试着修改一下!
最近比较忙,没去测试GridView

 回复 引用   
#19楼 2007-12-07 13:51 夏文俊[未注册用户]
项目做完了`
这个项目分页都是用的你修改的这个控件感觉性能不错 而且用起来也方面
没有什么大的问题~~`
谢谢啊`

 回复 引用   
#20楼 2007-12-07 13:57 夏文俊[未注册用户]
希望 缘易姿姿 能够继续贡献这样好的开发心得
非常感谢啊~!节约我们不少的开发时间~

 回复 引用   
#21楼 2007-12-07 14:50 夏文俊[未注册用户]
有个问题想问下 我有这样一条Sql语句 传进去之后会报错,不知道应该怎么样传~
private string TagsSeach(string strTag)
{
string strSql = "select * from VideoInfo,(Select ti_VId from TagsInfo where ti_Name = ''"+strTag+"'') as temp1 where VideoInfo.vi_Id = temp1.ti_VId";
return strSql;
}

 回复 引用 查看   
#22楼[楼主] 2007-12-08 22:18 缘易姿姿      
@夏文俊
不知道夏兄报的错误是什么?
其实您可以把那个控件的源码添加到你们项目解决方案中,跟中一下就可以找到错误原因了!

 回复 引用 查看   
#23楼 2008-02-21 14:21 qyfan      
这控件不错,DropDownList控件下拉怎么没用
 回复 引用   
#24楼 2008-03-22 14:09 wmj[未注册用户]
您好!
请问,您有支持oracle 的demo吗?
而且 在.net2.0中不可以用gridview
请发给我一份,谢谢
wmj2212@126.com

 回复 引用 查看   
#25楼[楼主] 2008-04-09 19:58 缘易姿姿      
@lili
@wmj
支持.net2.0分页的控件,我已经发布在这篇文中了:
http://www.cnblogs.com/hermes262/archive/2008/04/09/1145643.html

 回复 引用 查看   
#26楼 2008-04-10 11:27 negy      
-------------------------------------------------
非静态的字段、方法或属性“SqlPager.SqlPager.PagingMode.get”要求对象引用
-------------------------------------------------
使用时出现如上的错误,麻烦看下吧,谢谢

 回复 引用 查看   
#27楼[楼主] 2008-04-10 12:28 缘易姿姿      
@negy
提示信息已经很清楚了。
SqlPager.SqlPager.PagingMode属性不是静态得属性,所以需要用对象引用。
SqlPager sqlpager=new SqlPager();
sqlpager.属性

 回复 引用 查看   
#28楼 2008-04-10 12:44 negy      
@缘易姿姿
控件使用需要初始化吗?

 回复 引用 查看   
#29楼 2010-01-27 21:46 Mingle      
Demo目前无法下载,能否发个个我?Mingle.Lui@gmail.com,谢谢!