当前位置: 首页 > 图文教程 > 网络编程 > ASP > DataList控件也玩分页

ASP
嵌入式Web视频点播系统实现方法
GB与BIG5内码转换COM原代码
金额阿拉伯数字转换为中文的存储过程
利用 WSH 作定时工作流程
用InstallShield 进行 ASP 软件的打包和自动安装
服务器获得客户端时间的方法
关于如何读出图片的高度与长度的总结
按下回车键指向下一个位置的一个函数
一个不错的随机函数
一套加解密字符串的函数
一段加密函数(base64)
一段加密函数
使用asp实现支持附件的邮件系统(三)
使用asp实现支持附件的邮件系统(二)
使用asp实现支持附件的邮件系统(一)
检查当前目录下是否存在指定的文件,如果存在就重新命名
MD5加密的javascript实现例子
如何在服务器端调用winzip命令行对上传的多个文件打包压缩
MD5不可逆加密算法的ASP实现实例
看人家用使用InstallShield制作ASP安装程序(6)

ASP 中的 DataList控件也玩分页


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 56 ::
收藏到网摘: n/a

       作者:http://www.aspcn.com 飞刀
  
  众所周知,ASP.Net中给我们提供了三个数据控件--DataGrid,Repeater,DataList。在这三个控件中,DataGrid控件的功能最强大,Repeater控件最忠实于模版原样,DataList控件则兼而有之。
  
  DataGrid控件太有名了,所以以前用的讲的也很多,Repeater功能太少,没有什么好讲的。这里主要是讲一讲DataList控件。
  
  DataList控件其实功能也很强大,他支持选择、编辑,实现的方法也很简单,不过最令人头疼的就是它不像DataGrid控件一样内置了分页的功能,这么好的一个控件竟然不能分页!!!
  
  确实是一个很让人头疼的事情。
  
  不过,只是DataList没有提供内置的分页功能,但是并不表示,我们不能使用DataList控件来实现分页,既然它不给我分页功能,那只好自己动手了。
  
  下面是全部原代码,其实用到的方法和PHP中的分页差不多,只是这里用的是DataAdapter与DataSet组合,而不是PHP中的SQL语句直接搞定。
  
  (本程序在.Net Framework Beta 2下测试通过)
  
  
  <% @ Page Language="C#" %>
  <% @ Import Namespace="System.Data" %>
  <% @ Import Namespace="System.Data.OleDb" %>
  <Script Language="C#" Runat="Server">
  /*
   Create By 飞刀
   http://www.aspcn.com
   2001-7-25 01:44
  
   Support .Net Framework Beta 2
  */
  OleDbConnection MyConn;
  int PageSize,RecordCount,PageCount,CurrentPage;
  public void Page_Load(Object src,EventArgs e)
  {
   //设定PageSize
   PageSize = 10;
  
   //连接语句
   string MyConnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(".")+"..\\DataBase\\db1.mdb;";
   MyConn = new OleDbConnection(MyConnString);
   MyConn.Open();
  
   //第一次请求执行
   if(!Page.IsPostBack)
   {
   ListBind();
   CurrentPage = 0;
   ViewState["PageIndex"] = 0;
  
   //计算总共有多少记录
   RecordCount = CalculateRecord();
   lblRecordCount.Text = RecordCount.ToString();
  
   //计算总共有多少页
   PageCount = RecordCount/PageSize;
   lblPageCount.Text = PageCount.ToString();
   ViewState["PageCount"] = PageCount;
   }
  }
  //计算总共有多少条记录
  public int CalculateRecord()
  {
   int intCount;
   string strCount = "select count(*) as co from Score";
   OleDbCommand MyComm = new OleDbCommand(strCount,MyConn);
   OleDbDataReader dr = MyComm.ExecuteReader();
   if(dr.Read())
   {
   intCount = Int32.Parse(dr["co"].ToString());
   }
   else
   {
   intCount = 0;
   }
   dr.Close();
   return intCount;
  }
  
  ICollection CreateSource()
  {
  
   int StartIndex;
  
   //设定导入的起终地址
   StartIndex = CurrentPage*PageSize;
   string strSel = "select * from Score";
   DataSet ds = new DataSet();
  
   OleDbDataAdapter MyAdapter = new OleDbDataAdapter(strSel,MyConn);
   MyAdapter.Fill(ds,StartIndex,PageSize,"Score");
  
   return ds.Tables["Score"].DefaultView;
  }
  public void ListBind()
  {
   score.DataSource = CreateSource();
   score.DataBind();
  
   lbnNextPage.Enabled = true;
   lbnPrevPage.E