DataList控件也玩分页

继续漂流2014

继续漂流2014

2016-01-29 19:34

DataList控件也玩分页,DataList控件也玩分页
       作者: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
展开更多 50%)
分享

猜你喜欢

DataList控件也玩分页

ASP
DataList控件也玩分页

使用PagedDataSource类实现DataList和Repeater控件的分页显示

Web开发
使用PagedDataSource类实现DataList和Repeater控件的分页显示

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

DataCombo和DataList控件的使用二

编程语言 网络编程
DataCombo和DataList控件的使用二

做个DataList 可分页的数据源

Web开发
做个DataList 可分页的数据源

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

.Net分页控件发布

Web开发
.Net分页控件发布

VisualBasic中DataCombo和DataList控件的使用

编程语言 网络编程
VisualBasic中DataCombo和DataList控件的使用

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

漫画基础第二课:漫画阅读顺序的基本概念

漫画基础第二课:漫画阅读顺序的基本概念

PS鼠绘一只抽象的卡通猫头鹰

PS鼠绘一只抽象的卡通猫头鹰
下拉加载更多内容 ↓