DataList分页的一般方法

 看了网上一些关于DataList分页的列子,有很多分页方法,主要有利用PageDataSource类,存储过程分页,还有就是利用DataSet进行分页,其实是利用SqlDataAdapter的Fill方法,下面我就用DataSet 就行分页与大家分享(其实也是网上看来的,然后加上自己的理解,多了一点点功能,呵呵)

.cs文件如下:

 

public   static   string  connectionString  =  System.Configuration.ConfigurationManager.ConnectionStrings[ " gomayConnectionString " ].ConnectionString;
    
int  pageSize, pageCount, recordCount, currentPage;
    
protected   void  Page_Load( object  sender, EventArgs e)
    
{
        pageSize 
= 10;
        
if (!IsPostBack)
        
{
            ListBind();
//绑定DataList
            currentPage = 0;//首页索引为0
            ViewState["pageIndex"= 0;//保存页索引
            
//总记录数
            recordCount = CalculateRecord();
            lblRecordCount.Text 
="总记录数:"+ recordCount.ToString();
            
//总页数
            pageCount = recordCount / pageSize;//取整
            if (recordCount % pageSize > 0//总记录数不是 页大小的 整数倍
            {
                pageCount 
= pageCount + 1;
            }

            ViewState[
"pageCount"= pageCount; //保存页数
            lblPageCount.Text = "页数:" + pageCount.ToString();
            Label2.Text 
= (currentPage + 1+ "/" + pageCount.ToString();


        }

        btnGo.Attributes.Add(
"onclick"" return validate()");
    }

    
// 计算记录总数
     public   int   CalculateRecord() 
    
{

        
int intCount;
        
string strCount = "select count(*) as co from quote";
        SqlConnection con 
= new SqlConnection(connectionString);
        SqlCommand cmd 
= new SqlCommand(strCount, con);
        con.Open();
        SqlDataReader dr 
= cmd.ExecuteReader();
        
if (dr.Read())
        
{
            intCount 
= int.Parse(dr["co"].ToString());
        }

        
else
        
{
            intCount 
= 0;

        }

        dr.Close();
        
return intCount;
        con.Close();


    }

    
// 创建数据源
    ICollection CreateSource()
    
{
        SqlConnection con
=new SqlConnection(connectionString);
        
int startIndex;
        startIndex 
= currentPage * pageSize; //某页的第一条记录索引
        string strSel = "select * from quote";
        DataSet ds 
= new DataSet();
        SqlDataAdapter da
=new SqlDataAdapter(strSel,con);
        
        da.Fill(ds, startIndex, pageSize, 
"quote");//取一张页面的记录数
        return ds.Tables["quote"].DefaultView;
    }

    
public   void  ListBind()
    
{

        DataList1.DataSource 
= CreateSource();
        DataList1.DataBind();
        lbnNextPage.Enabled 
= true;
        lbnPrevPage.Enabled 
= true;
        
if (currentPage == pageCount - 1)
        
{
            lbnNextPage.Enabled 
= false;
        }

        
if (currentPage == 0)
        
{
            lbnPrevPage.Enabled 
= false;
        }


    }

    
// 上一页 下一页
     protected   void  Page_OnClick( object  sender, CommandEventArgs e)
    
{
        currentPage 
= (int)ViewState["pageIndex"];
        pageCount 
= (int)ViewState["pageCount"];
        
string cmd = e.CommandName;
        
switch (cmd)
        

            
case "Next":
                
if (currentPage < pageCount - 1) currentPage++;
                
//Label2.Text = (currentPage+1) + "/" + pageCount.ToString();
                break;
            
case "Prev":
                
if (currentPage > 0) currentPage--;
                
//Label2.Text = (currentPage+1) + "/" + pageCount.ToString();
                break;
            
case "First":
                currentPage 
= 0;
                
break;
            
case"Last":
                currentPage 
= pageCount - 1;
                
break;


        }

        Label2.Text 
= (currentPage + 1+ "/" + pageCount.ToString();

        ViewState[
"pageIndex"= currentPage;
        ListBind();

    }

    
// 跳转页
     protected   void  btnGo_Click( object  sender, EventArgs e)
    
{
        
int intPage=Convert.ToInt32(txtPage.Text);
        
//currentPage = intPage-1;
        pageCount = (int)ViewState["pageCount"];
        
if (intPage > pageCount) //如果输入的页数大于总页数
        {
            currentPage 
= pageCount - 1;
        }

        
else if (intPage <=0)
        
{
            currentPage 
= 0;
        }

        
else
        
{
            currentPage 
= intPage - 1;
        }


        Label2.Text 
= (currentPage + 1+ "/" + pageCount.ToString();
      
        ListBind();
        
    }

aspx 文件如下:

 

<% @ Page Language = " C# "  AutoEventWireup = " true "  CodeFile = " DataList.aspx.cs "  Inherits = " test_DataList "   %>

<! DOCTYPE HTML PUBLIC  " -//W3C//DTD HTML 4.0 Transitional//EN "   >
< HTML >
< HEAD >
< title > 021DataList </ title >

</ HEAD >
< body >
< script type = " text/javascript " >
function validate()
{
    
if (document.getElementById("txtPage").value=="")
        
{
            alert(
'不能为空!');
            document.getElementById(
"txtPage").focus();
            
return false;
         }

    
         
        var digits
="0123456789";
        var temp;
        
for(i=0;document.getElementById("txtPage").value.length;i++)
            
{
                temp
=document.getElementById("txtPage").value.substring(i,i+1);
                
if (digits.indexOf(temp)==-1)
                    
{
                    alert(
"只能输入数字!");
                    document.getElementById(
"txtPage").focus();
                    
return false;
            
                    }

                     
return true;
            }

           
      
    
return true;
}



   

</ script >
< form id = " Form1 "  method = " post "  runat = " server " >
< FONT face = " 宋体 " >
    
< asp:DataList ID = " DataList1 "  runat = " server " >
        
< ItemTemplate >
            
< asp:Label ID = " Label1 "  runat = " server "  Text = ' <%# Eval("printname") %> ' ></ asp:Label >
        
</ ItemTemplate >
    
</ asp:DataList >
    
< asp:Label ID = " Label2 "  runat = " server "  Text = " Label " ></ asp:Label ></ FONT >< asp:LinkButton ID = " lbnPrevPage "  runat = " server "  CommandName = " Prev "  OnCommand = " Page_OnClick " > 上一页 </ asp:LinkButton >
    
< asp:LinkButton ID = " lbnNextPage "  runat = " server "  CommandName = " Next "  OnCommand = " Page_OnClick " > 下一页 </ asp:LinkButton >
    
< asp:Label ID = " lblRecordCount "  runat = " server "  Text = " Label " ></ asp:Label >
    
< asp:Label ID = " lblPageCount "  runat = " server "  Text = " Label " ></ asp:Label >
    
< asp:LinkButton ID = " lbnFirstPage "  runat = " server "  CommandName = " First "  OnCommand = " Page_OnClick " > 首页 </ asp:LinkButton >
    
< asp:LinkButton ID = " lbnLastPage "  runat = " server "  CommandName = " Last "  OnCommand = " Page_OnClick "  Width = " 33px " > 末页 </ asp:LinkButton >
    跳转到
< asp:TextBox ID = " txtPage "  runat = " server "  Width = " 30px " ></ asp:TextBox >
    
< asp:Button ID = " btnGo "  runat = " server "  Text = " Go "  OnClick = " btnGo_Click "     />
</ form >
</ body >
</ HTML >

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值