`

DataList分页

阅读更多
<% @ 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.Enabled = true;
   if(CurrentPage==(PageCount-1)) lbnNextPage.Enabled = false;
   if(CurrentPage==0) lbnPrevPage.Enabled = false;
   lblCurrentPage.Text = (CurrentPage+1).ToString();
  
  }
  
  public void Page_OnClick(Object sender,CommandEventArgs e)
  {
   CurrentPage = (int)ViewState["PageIndex"];
   PageCount = (int)ViewState["PageCount"];
  
   string cmd = e.CommandName;
   //判断cmd,以判定翻页方向
   switch(cmd)
   {
   case "next":
   if(CurrentPage<(PageCount-1)) CurrentPage++;
   break;
   case "prev":
   if(CurrentPage>0) CurrentPage--;
   break;
   }
  
   ViewState["PageIndex"] = CurrentPage;
  
   ListBind();
  
  }
  </script>
  <html>
  <head>
  <title></title>
  </head>
  <body>
  <form runat="server">
  共有<asp:Label id="lblRecordCount" ForeColor="red" runat="server" />条记录 
  当前为<asp:Label id="lblCurrentPage" ForeColor="red" runat="server" />/<asp:Label id="lblPageCount" ForeColor="red" runat="server" />页 
  
  <asp:DataList id="score" runat="server"
  HeaderStyle-BackColor="#aaaadd"
  AlternatingItemStyle-BackColor="Gainsboro"
  EditItemStyle-BackColor="yellow"
  >
   <ItemTemplate>
   姓名:<%# DataBinder.Eval(Container.DataItem,"Name") %>
   <asp:LinkButton id="btnSelect" Text="编辑" CommandName="edit" runat="server" />
   </ItemTemplate>
  </asp:DataList>
  <asp:LinkButton id="lbnPrevPage" Text="上一页" CommandName="prev" OnCommand="Page_OnClick" runat="server" />
  <asp:LinkButton id="lbnNextPage" Text="下一页" CommandName="next" OnCommand="Page_OnClick" runat="server" />
  
  </form>
  </body>
  </html>

用viewstate传递分页的信息,最重要的就是这一句   MyAdapter.Fill(ds,StartIndex,PageSize,"Score");
================================================================================
DataList分页2
Repeater和DataList控件提供了一个快速、灵活的表现数据的方式,但是,它们没有内建的分页功能;DataGrid控件提供了内建的分页功能,但它的结构比较复杂。下面就用PagedDataSource类实现Repeater和DataList的分页。 PagedDataSource封装了DataGrid的分页属性,我们可以象DataGrid那样进行分页。代码如下:
&nbsp;
<%@ Page Language="C#" %>
<%@ import namespace="System.Data" %>
<%@ import namespace="System.Data.OleDb" %>
<script language="C#" runat="server">
public void Page_Load(Object src,EventArgs e) {
  OleDbConnection objConn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" +
   Server.MapPath("../aspxWeb.mdb"));
  OleDbDataAdapter objCommand=new OleDbDataAdapter("select * from Document",objConn);
  DataSet ds=new DataSet();
  objCommand.Fill(ds);

  PagedDataSource objPds = new PagedDataSource();
  objPds.DataSource = ds.Tables[0].DefaultView;
  objPds.AllowPaging = true;
  objPds.PageSize = 5;
  int CurPage;
  if (Request.QueryString["Page"] != null)
    CurPage=Convert.ToInt32(Request.QueryString["Page"]);
  else
    CurPage=1;

  objPds.CurrentPageIndex = CurPage-1;
  lblCurrentPage.Text = "当前页:" + CurPage.ToString();

  if (!objPds.IsFirstPage)
    lnkPrev.NavigateUrl=Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage-1);

  if (!objPds.IsLastPage)
    lnkNext.NavigateUrl=Request.CurrentExecutionFilePath+ "?Page=" + Convert.ToString(CurPage+1);

  Repeater1.DataSource=objPds;
  Repeater1.DataBind();
}
</script>
<html>
<head>
<title>Repeater控件分页的例子</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
  P,TD,DIV,SPAN {font-size:9pt}
</style>
</head>
<body>
<form name="form1" method="POST" runat="server">
<div style="padding:5px;background-color:#dedede">
<asp:label ID="lblCurrentPage" runat="server"></asp:label></td>
  <td>&nbsp;<asp:HyperLink id="lnkPrev" runat="server">上一页</asp:HyperLink>
  <asp:HyperLink id="lnkNext" runat="server">下一页</asp:HyperLink>&nbsp;
</div>
<hr size="1" color="#000099"/>
<asp:Repeater ID="Repeater1" runat="server">
<Itemtemplate>
<div style="padding:5px;background-color:#dedede">
<%# DataBinder.Eval(Container.DataItem, "Title") %>
</div>
</Itemtemplate>
</asp:Repeater>
</form>
</body>
</html>

分享到:
评论

相关推荐

    datalist分页技术及实现

    Datalist分页技术的核心原理是将大数据集分割成若干小部分,每次只加载和显示一部分数据,用户可以通过点击页码或导航按钮来切换不同的数据页。这样既能降低服务器的压力,也能提供更好的用户体验。 在实现Datalist...

    DataList分页技巧方法

    DataList分页技巧方法 DataList分页技巧方法是一种实现DataList和Repeater控件的分页显示的方法。该方法使用PagedDataSource类来实现分页显示。PagedDataSource类是ASP.NET提供的一个功能强大的类,用于实现数据...

    datalist分页

    标题中的“datalist分页”指的是在Web开发中使用C#语言操作ASP.NET中的DataList控件实现数据分页的功能。DataList控件是.NET框架提供的一种数据绑定控件,常用于显示数据集中的数据,并可以自定义布局,提供灵活的...

    asp.net里的DataList分页

    首先,DataList分页涉及到的主要目标是提高用户体验,通过将大量数据分割成多个小部分(页面)来避免一次性加载所有数据导致的性能问题。分页通常包括“上一页”、“下一页”、以及页码选择按钮,允许用户在数据集的...

    实现DataList分页完整代码

    在这个“实现DataList分页完整代码”的压缩包中,你将获得一个实现DataList分页功能的详细示例,适合初学者和有经验的开发者参考。 首先,我们需要了解DataList的基本用法。DataList不同于GridView那样内置了分页...

    自己写的C#+Access实现DataList分页

    自己写的实现DataList分页功能,自认为比以往的分页功能效率提高了许多,因为以往都是把数据全部查询出来后再进行分页,并且,每点击下一页时,就重新查询所有数据一遍,当数据量特别大时,很耗费时间,并且,浪费...

    datalist分页操作

    本项目中的"datalist分页操作"着重于如何实现一个功能完备的分页功能,包括上一页、下一页、首页和尾页的导航,以及数据的动态绑定。以下将详细解析这个知识点。 1. **DataList控件**:DataList不同于GridView或...

    DataList分页例子

    通过以上步骤,我们可以实现一个功能完善的DataList分页示例。理解这些知识点,将有助于你在实际项目中灵活运用DataList控件进行数据展示和分页操作。在实践中不断调试和优化,可以让你的分页功能更加健壮和高效。

    c#datalist分页代码

    ### C# Datalist 分页代码详解 #### 标题:C# Datalist 分页代码 #### 描述:C# Datalist 分页代码 ASPX 页面的详细代码。建议有一定基础的人下载。 #### 标签:C# Datalist 分页 #### 部分内容解读与扩展知识点...

    c# asp.net hashtable对Datalist分页

    你可以下载并研究这个文件,以加深对ASP.NET中Datalist分页的理解和实践。 总之,虽然Datalist本身不支持内置的分页功能,但我们可以通过结合C#的Hashtable对象和适当的数据库查询技术,轻松实现定制化的分页效果。...

    datalist分页实例(精品).rar

    【标题】"datalist分页实例(精品).rar" 提供了一个关于在Web开发中使用DataList控件实现分页功能的示例。这个压缩包很可能是包含源代码、数据库配置以及详细说明的项目文件,旨在帮助开发者学习和理解如何在实际应用...

    DataList分页(新).txt

    ### DataList 分页知识点 #### 一、DataList控件简介 DataList 是 ASP.NET 提供的一个用于数据绑定的服务器控件,它允许开发者自定义布局格式,支持重复项模板和交替项模板,并且可以方便地对数据进行排序、分页等...

    DataList分页功能

    DataList分页主要是为了提高用户体验,避免一次性加载大量数据导致页面响应慢或资源消耗过多。通过分页,用户可以逐页查看数据,使得页面加载速度更快,操作更流畅。在ASP.NET中,我们可以利用内置的分页功能或者...

    简单自定义实现datalist分页

    ### 知识点:简单自定义实现 DataList 分页 #### 概述 在Web开发中,当数据量较大时,直接将所有数据一次性展示给用户不仅会增加服务器的负担,还会降低用户体验。因此,分页显示数据成为了一种常用的解决方案。本...

    深入DataList分页方法(利用PagedDataSource类)

    ### 深入DataList分页方法:利用PagedDataSource类 在ASP.NET开发中,对数据进行分页处理是一项非常常见的需求。特别是在处理大量数据时,为了提高用户体验及减轻服务器压力,通常需要将数据分割成多页显示。本文将...

    DataList分页代码段

    在提供的"DataList分页"压缩包文件中,可能包含了实现这些步骤的Word文档,包括C#代码示例。你可以将这些代码复制到你的项目中,根据具体需求进行调整。记住,测试是关键,确保分页功能在不同场景下都能正常工作。 ...

Global site tag (gtag.js) - Google Analytics