<% @ 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那样进行分页。代码如下:
<%@ 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> <asp:HyperLink id="lnkPrev" runat="server">上一页</asp:HyperLink>
<asp:HyperLink id="lnkNext" runat="server">下一页</asp:HyperLink>
</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和Repeater控件的分页显示的方法。该方法使用PagedDataSource类来实现分页显示。PagedDataSource类是ASP.NET提供的一个功能强大的类,用于实现数据...
标题中的“datalist分页”指的是在Web开发中使用C#语言操作ASP.NET中的DataList控件实现数据分页的功能。DataList控件是.NET框架提供的一种数据绑定控件,常用于显示数据集中的数据,并可以自定义布局,提供灵活的...
首先,DataList分页涉及到的主要目标是提高用户体验,通过将大量数据分割成多个小部分(页面)来避免一次性加载所有数据导致的性能问题。分页通常包括“上一页”、“下一页”、以及页码选择按钮,允许用户在数据集的...
在这个“实现DataList分页完整代码”的压缩包中,你将获得一个实现DataList分页功能的详细示例,适合初学者和有经验的开发者参考。 首先,我们需要了解DataList的基本用法。DataList不同于GridView那样内置了分页...
自己写的实现DataList分页功能,自认为比以往的分页功能效率提高了许多,因为以往都是把数据全部查询出来后再进行分页,并且,每点击下一页时,就重新查询所有数据一遍,当数据量特别大时,很耗费时间,并且,浪费...
本项目中的"datalist分页操作"着重于如何实现一个功能完备的分页功能,包括上一页、下一页、首页和尾页的导航,以及数据的动态绑定。以下将详细解析这个知识点。 1. **DataList控件**:DataList不同于GridView或...
通过以上步骤,我们可以实现一个功能完善的DataList分页示例。理解这些知识点,将有助于你在实际项目中灵活运用DataList控件进行数据展示和分页操作。在实践中不断调试和优化,可以让你的分页功能更加健壮和高效。
### C# Datalist 分页代码详解 #### 标题:C# Datalist 分页代码 #### 描述:C# Datalist 分页代码 ASPX 页面的详细代码。建议有一定基础的人下载。 #### 标签:C# Datalist 分页 #### 部分内容解读与扩展知识点...
你可以下载并研究这个文件,以加深对ASP.NET中Datalist分页的理解和实践。 总之,虽然Datalist本身不支持内置的分页功能,但我们可以通过结合C#的Hashtable对象和适当的数据库查询技术,轻松实现定制化的分页效果。...
【标题】"datalist分页实例(精品).rar" 提供了一个关于在Web开发中使用DataList控件实现分页功能的示例。这个压缩包很可能是包含源代码、数据库配置以及详细说明的项目文件,旨在帮助开发者学习和理解如何在实际应用...
### DataList 分页知识点 #### 一、DataList控件简介 DataList 是 ASP.NET 提供的一个用于数据绑定的服务器控件,它允许开发者自定义布局格式,支持重复项模板和交替项模板,并且可以方便地对数据进行排序、分页等...
DataList分页主要是为了提高用户体验,避免一次性加载大量数据导致页面响应慢或资源消耗过多。通过分页,用户可以逐页查看数据,使得页面加载速度更快,操作更流畅。在ASP.NET中,我们可以利用内置的分页功能或者...
### 知识点:简单自定义实现 DataList 分页 #### 概述 在Web开发中,当数据量较大时,直接将所有数据一次性展示给用户不仅会增加服务器的负担,还会降低用户体验。因此,分页显示数据成为了一种常用的解决方案。本...
### 深入DataList分页方法:利用PagedDataSource类 在ASP.NET开发中,对数据进行分页处理是一项非常常见的需求。特别是在处理大量数据时,为了提高用户体验及减轻服务器压力,通常需要将数据分割成多页显示。本文将...
在提供的"DataList分页"压缩包文件中,可能包含了实现这些步骤的Word文档,包括C#代码示例。你可以将这些代码复制到你的项目中,根据具体需求进行调整。记住,测试是关键,确保分页功能在不同场景下都能正常工作。 ...