DataList,Repeater分页问题可以采用三种方式解决
2007-08-10 15:59
501 查看
DataList,Repeater分页问题可以采用三种方式解决:
1.采用第三方开发的控件如:ASpNetPager,用了感觉效果还不错
2.使用SqlDataAdapter.Fill(DataSet,起始记录位置,最大填充记录数,"表名")这个重载函数,好像是这个,有可能我写的有问题,一时记不清楚了
3.或者采用.NET提供的一个支持分页的类 PagedDataSource
下面是一个使用 PagedDataSource 实现对Repeater控件分页的例子
<%@ 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>
1.采用第三方开发的控件如:ASpNetPager,用了感觉效果还不错
2.使用SqlDataAdapter.Fill(DataSet,起始记录位置,最大填充记录数,"表名")这个重载函数,好像是这个,有可能我写的有问题,一时记不清楚了
3.或者采用.NET提供的一个支持分页的类 PagedDataSource
下面是一个使用 PagedDataSource 实现对Repeater控件分页的例子
<%@ 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,Repeater分页问题可以采用三种方式解决:
- DataList,Repeater分页问题可以采用三种方式解决
- 索引是从数据库中获取数据的最高效方式之一。95%的数据库性能问题都可以采用索引技术得到解决。
- Linux本地采用字符界面的方式登录不成功--问题已解决
- 通用分页控件(DataGrid,DataList,Repeater都可以用它来分页)
- 通用分页控件(DataGrid,DataList,Repeater都可以用它来分页)
- 换个角度看敏捷1 - 或许可能可以把敏捷看作一种问题解决方式
- Java面向对象方式(观察者模式)解决菲波拉契数列问题(兔子三岁后就可以生小兔子)
- angular.js中解决跨域问题的三种方式
- Android App监听软键盘按键的三种方式 以及 输入法删除退格键的冲突问题解决
- Android App监听软键盘按键的三种方式 以及 输入法删除退格键的冲突问题解决
- 解决datalist中单选按钮可以多选的问题(Asp.Net)
- flash无法覆盖的问题_三种办法可以解决flash覆盖其他元素
- 通用分页控件(DataGrid,DataList,Repeater都可以用它来分页)
- 通用分页控件(DataGrid,DataList,Repeater都可以用它来分页)
- 通用分页控件(DataGrid,DataList,Repeater都可以用它来分页)
- was版本过期”或提示“该产品将在 60 天内到期”时,我们可以通过手工的方式解决过期问题:
- Vue.js2 + Laravel5 采用 CORS 方式解决 AJAX 跨域的问题
- 通用分页控件(DataGrid,DataList,Repeater都可以用它来分页)
- JS跨域问题以及采用JSONP方式解决跨域问题