重学>ASP.NET小实例>DataReader手工分页

花了两天时间,参考别人写好,

首先表数据如下:

重学>ASP.NET小实例>DataReader手工分页 

直接上代码:

using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Data;
using  System.Data.SqlClient;
using  System.Configuration;

public   partial   class  learnFenye : System.Web.UI.Page
{
    SqlConnection sqlconn;
    
protected   void  Page_Load( object  sender, EventArgs e)
    {
        
int  PageSize  =   3 ; // 每页显示条数
         int  PageCount  =   0 ; // 总共页数
         int  RecordCount  =   0 ; // 数据库记录条数
         int  CurrentPage  =   0 ; // 当前页数

        


        
string  conn  =  ConfigurationManager.ConnectionStrings[ " conn " ].ConnectionString;
        sqlconn 
=   new  SqlConnection(conn);
        sqlconn.Open();
        
// 第一步:首先计算数据库的记录条数
        
// RecordCount=
        RecordCount  =  CountRecord();
        Response.Write(
" 数据库的记录条数有: "   +  RecordCount  +   " <br /> " );

        
// 第二步: 计算页数
        PageCount  =  RecordCount  /  PageSize;
        
if  (RecordCount  %  PageSize  >   0 ) // 如果整除不了,要多出一页
        {
            PageCount 
=  PageCount  +   1 ;
        }
        Response.Write(
" 分页的页数有: "   +  PageCount  +   " <br /> " );


        
// 第三步:获取当前页数
         if  (Request.QueryString[ " page " !=   null )
        {
            CurrentPage 
=  Convert.ToInt32(Request.QueryString[ " page " ]);
        }
        
else
        {
            CurrentPage 
=   1 ; // 如果没设置,就从第一页开始
        }
        Response.Write(
" 当前页数是: "   +  CurrentPage  +   " <br /> " );


        
// 第四步: 开始分页
         string  sql  =   " SELECT TOP ( "   +  PageSize  +   " ) TicketAutoId, value FROM Ticket  " ;
        sql 
+=   " where TicketAutoId not in (select top  "   +  (CurrentPage  -   1 *  PageSize  +   "  TicketAutoId from Ticket order by TicketAutoId )  " ;
        sql 
+=   "  ORDER BY TicketAutoId " ;
        SqlCommand sqlcmd 
=   new  SqlCommand(sql, sqlconn);
        SqlDataReader sqldr 
=  sqlcmd.ExecuteReader();
        
string  HTMLTable;
        HTMLTable 
=   " <table> " ;
        
while (sqldr.Read())
        {
            
            HTMLTable 
+=   " <tr><td> " + sqldr.GetInt32( 0 ).ToString() + " </td></tr> " ;   
            
// Response.Write(sqldr.GetInt32(0));
        }
        HTMLTable 
+=   " </table> " ;
        Response.Write(HTMLTable);
        
// sqldr.Close();

        
// 第五步:设置首页,上一页,下一页,末页按钮
         int  pagePre, pageNext;
        pagePre 
=  CurrentPage  -   1 ;
        pageNext 
=  CurrentPage  +   1 ;
        
string  pageHtml;

        
if  (pagePre  ==   0 )
        {
            pageHtml 
=   " 首页&nbsp;上页 " ;
        }
        
else
        {
            pageHtml 
=   " <a href='learnfenye.aspx?page=1'>首页</a>&nbsp;<a href='learnfenye.aspx?page= "   +  pagePre  +   " '>上页</a> " ;
        }

        
if  (pageNext  >  PageCount)
        {
            pageHtml 
+=   " &nbsp;下页&nbsp;末页 " ;
        }
        
else
        {
            pageHtml 
+=   " &nbsp;<a href='learnfenye.aspx?page= "   +  pageNext  +   " '>下页</a> " ;
            pageHtml 
+=   " &nbsp;<a href='learnfenye.aspx?page= "   +  PageCount  +   " '>末页</a> " ;
        }
        IndexButton.InnerHtml 
=  pageHtml;

    }

    
private   int  CountRecord() // 统计数据库表的记录条数
    {
        
int  count  =   0 ;
        
string  sql  =   " select count(*) from Ticket " ;
        SqlCommand sqlcmd 
=   new  SqlCommand(sql, sqlconn);
        SqlDataReader sqldr 
=  sqlcmd.ExecuteReader();
        
if  (sqldr.Read()  !=   null )
        {
            count 
=  sqldr.GetInt32( 0 );
        }
        sqldr.Close();
        
return  count;
    }
}

 改进的地方:第三步获取当前页,要判断当前页是否合法。

// 第三部:获取当前页数
             if  (Request.QueryString[ " page " !=   null )
            {
                
int  dangqianyeshu  =   1 ;
                
try
                {
                    dangqianyeshu 
=  Convert.ToInt32(Request.QueryString[ " page " ]);
                    
if  (dangqianyeshu  >  PageCount)
                    {
                        Response.Write(
" 超过最大页 " );
                        Response.End();
                    }
                }
                
catch  (Exception ex)
                {
                    Response.Write(
" 页数非法! " );
                }
                
finally
                {
                    CurrentPage 
=  Convert.ToInt32(dangqianyeshu);
                }
            }
            
else
            {
                CurrentPage 
=   1 ;
            }
            Response.Write(
" 当前页数是: "   +  CurrentPage  +   " <br /> " );

读取数据库第一条数据,有专门的读取方法。比如getValue方法,注意getValue方法是返回的是object类型,要转换。

你可能感兴趣的:(asp.net)