首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

Repeater控件的分页?解决思路

2012-02-21 
Repeater控件的分页?关于Repeater控件的分页,网上有很多,但都是在页面加载的时候进行分页,如下例:%@PageL

Repeater控件的分页?
关于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> &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>

在实际应用中,都是基于某一事件(比如查询)的,如果将上例子改写为基于某一查询事件的Repeater分页?



[解决办法]
我觉得象这种只是展示数据的页面,可以利用自定义http处理程序饶过asp.net页框架处理,利用dataset生成xml内存流--进行转化为字符串流,然后利用httptextwriter的write方法写入网络流。这个时候就可以利用客户数据岛绑定table的方法实现客户端分页。再配合CSS\Javascrit的使用。当然这一切工作都是在ProcessRequest中完成的。
------由于数据全部在客户端ie缓存,对用户是非常友好的,同时还减轻了服务器的负担。

热点排行