[ASP.NET2.0]如何利用 DataReader 实现分页

来源:互联网 发布:91助手mac版官方下载 编辑:程序博客网 时间:2024/05/13 17:48
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>如何利用 DataReader 实现分页</title>
</head>
<body >
<div>
<%
    
    System.Data.SqlClient.SqlConnection conn 
= new System.Data.SqlClient.SqlConnection("server=.;database=pubs;uid=sa;pwd=");
    System.Data.SqlClient.SqlCommand cmd 
= new System.Data.SqlClient.SqlCommand("",conn);

    
int rowIndex=1;
    
int pageId=1;
    
int maxRow=1;
    
int maxPage=1;
    
int pageSize = 5;


    
if (Request.QueryString["pageId"== null)
    {
        pageId 
= 1;
    }
    
else
    {
        pageId 
= int.Parse(Request.QueryString["pageId"].Trim());
    }
    

    try
    {
        
if (conn.State == System.Data.ConnectionState.Closed)
        {
            conn.Open();
        }

        cmd.CommandText 
= "select count(*) from authors";
        maxRow 
= (int)cmd.ExecuteScalar();
        maxPage
=(maxRow%pageSize>0)?(maxRow/pageSize+1):(maxRow/pageSize);

        cmd.CommandText 
= "select au_id,au_lname,au_fname,phone,address from authors";
        System.Data.SqlClient.SqlDataReader dr 
= cmd.ExecuteReader();

        
for (int i = 0; i < (pageId - 1* pageSize;i++ )
        {
            dr.Read();
            rowIndex
++;
        }

        
for (int i = rowIndex; i <(rowIndex+ pageSize);i++ )
        {
            
if (dr.Read())
            {

                Response.Write(i.ToString());
                Response.Write(
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");

                Response.Write(dr[
"au_id"].ToString());
                Response.Write(
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");

                Response.Write(dr[
"au_lname"].ToString());
                Response.Write(
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");

                Response.Write(dr[
"au_fname"].ToString());
                Response.Write(
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");

                Response.Write(dr[
"phone"].ToString());
                Response.Write(
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");

                Response.Write(dr[
"address"].ToString());
                Response.Write(
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");

                Response.Write(
"<hr/>");

            }

        }
        

    }
    catch (System.Data.SqlClient.SqlException e)
    {
        Response.Write(e.Message.ToString());
    }
    finally
    {
        
if (conn.State == System.Data.ConnectionState.Open)
        {
            conn.Close();
        }
    }

    
%>

<href="DataReader2.aspx?pageId=1">第一页</a>
 || 

<href="DataReader2.aspx?pageId=<%=(pageId>1)?(pageId-1):1 %>">上一页</a>
 || 

<href="DataReader2.aspx?pageId=<%=(pageId<maxPage)?(pageId+1):maxPage %>">下一页</a>
 || 

<href="DataReader2.aspx?pageId=<%=maxPage %>">最后页</a>

<hr />

记录总数为:
<%=maxRow %>
<br />
页码总数为:
<%=maxPage %>
<br />
当前页码为:
<%=pageId %>
</div>
</body>
</html>
 
原创粉丝点击