网站首页站长博客下载中心域名交易站长论坛域名主机免费电邮免费域名中文排行排名查询站长书库书籍教程下载
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
学院首页 网络编程 网页设计 图形图象 数 据 库 服 务 器 网络媒体 网络安全 个人专栏 站长CLUB 业界新闻 信息公告
 当前位置:首页 >> 网络编程 >> NET专区 >> 正文
公告通知
返回上级列表
资料搜索
相关文章
用户自定义控件的应用
c#.net常用函数和方法集
在VB中使用水晶报表的一种简易编
C#调用父类的父类的方法
浏览.NET Framework 2.0 类型库中
为.Text Blog 添加 计数器
编程实现邮件地址有效性检测 
VB/VB.NET/C#导出到Excel的方法
c#高性能在WEB端产生验证图片
用System.Web.Caching.Cache保存
利用ASP.NET实现分页管理器
[ 来源:转载 | 作者:无从考证 | 时间:2005-12-19 13:18:32 | 浏览:人次 ]
收藏到新浪ViVi 收藏到365KEY 收藏到我摘  字号选择〖    〗/ 双击滚屏 单击停止  

 } 
 public int PageCount 
 { 
  get 
  { 
   if(this.pageCount == -1) 
   { 
    string selCountStr = string.Format("Select count(*) from {0} {1}" ,this.theParas.TableName ,this.theParas.WhereStr) ; 
    DataSet ds= this.adoBase.DoQuery(selCountStr) ; 
    this.itemCount = int.Parse(ds.Tables[0].Rows[0][0].ToString()) ; 
    this.pageCount = this.itemCount/this.theParas.PageSize ; 
    if((this.itemCount%this.theParas.PageSize >0)) 
    { 
     ++ this.pageCount ; 
    } 
   } 
   return this.pageCount ; 
  } 
 } 

 ///  
 /// GetPage 取出指定的一页 
 ///  
 public DataTable GetPage(int index) 
 { 
  if(index == this.curPageIndex) 
  { 
   return this.curPage ; 
  } 

  if((index < 0) || (index >(this.PageCount-1))) 
  { 
   return null; 
  } 

  DataTable dt = this.GetCachedObject(index) ; 

  if(dt == null) 
  { 
   string selectStr = this.ConstrutSelectStr(index) ; 
   DataSet ds = this.adoBase.DoQuery(selectStr) ; 
   dt = ds.Tables[0] ; 

   this.CacheObject(index ,dt) ; 
  } 
  this.curPage = dt ; 
  this.curPageIndex = index ; 
  return this.curPage ; 
 } 

 private DataTable GetCachedObject(int index) 
 { 
  if(this.fixCacher == null) 
  { 
   return null ; 
  } 
  return (DataTable)this.fixCacher[index] ; 
 } 

 private void CacheObject(int index ,DataTable page) 
 { 
  if(this.fixCacher != null) 
  { 
   this.fixCacher.PutIn(index ,page) ; 
  } 
 } 

 public DataTable CurrentPage() 
 { 
  return this.curPage ; 
 } 

 public DataTable PrePage() 
 { 
  return this.GetPage((--this.curPageIndex)) ; 
 } 

 public DataTable NextPage() 
 { 
  return this.GetPage((++this.curPageIndex)) ; 
 }  

 private string ConstrutSelectStr(int pageIndex) 
 { 
  if(pageIndex == 0) 
  { 
   return string.Format("Select top {0} {1} from {2} {3} ORDER BY ID" ,this.theParas.PageSize ,this.fieldStrs ,this.theParas.TableName ,this.theParas.WhereStr) ; 
  } 

  int innerCount = this.itemCount - this.theParas.PageSize*pageIndex ; 
  string innerSelStr = string.Format("Select top {0} {1} from {2} {3} ORDER BY ID DESC " ,innerCount , this.fieldStrs ,this.theParas.TableName ,this.theParas.WhereStr) ; 
  string outerSelStr = string.Format("Select top {0} * from ({1}) DERIVEDTBL ORDER BY ID" ,this.theParas.PageSize ,innerSelStr) ; 

  return outerSelStr ; 
 } 

 #region Initialize 
 public void Initialize(IDBAccesser accesser, int page_Size, string whereStr, string[] fields) 
 { 
  this.theParas = new DataPaginationParas(accesser.ConnectString ,accesser.DbTableName ,whereStr) ; 
  this.theParas.Fields = fields ; 
  this.theParas.PageSize = page_Size ; 

  this.fieldStrs = this.theParas.GetFiedString() ;  
  this.adoBase = new SqlADOBase(this.theParas.ConnectString) ; 
 }  

 public void Initialize(DataPaginationParas paras) 
 { 
  this.theParas = paras ; 
  this.fieldStrs = this.theParas.GetFiedString() ;  
  this.adoBase = new SqlADOBase(this.theParas.ConnectString) ; 
 } 

 #endregion 
 #endregion 

  了解这个类的实现,可以从GetPage(int index)方法入手,另外私有方法ConstrutSelectStr()的实现说明了如何使用嵌套sql语句进行随机分页搜索。 

  最后,关于分页管理器,需要指出的是,搜索对应的表必须有一个名为"ID"的主键--这是唯一的要求。另外,分页管理器实现用到的数据访问低阶封装IADOBase定义于EnterpriseServerBase类库中。 

  使用分页管理器是很简单的,加上UI界面后,只要把返回的DataTable绑定到DataGrid就可以了。

本新闻共2页,当前在第2页  1  2  


[发送给好友]  [打印本页]  [关闭窗口]  [返回顶部]   转载请注明来源:http://edu.chinaz.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
栏目编辑: 设计风 责任编辑: 简若宁
原始作者: 无从考证 录入时间: 2005-12-19 13:18:32
信息来源: 转载 投稿信箱: Edu#chinaz.com
设为首页 - 加入收藏 - 关于我们 - 广告服务 - 版权申明 - 友情链接 - 联系方式 - 总编信箱 - 会员投稿