显示N-M条如何实现

今天做一个页面,用DataList分页,并且要实现 "显示N-M条"!

在实现过程中,遇到了困难就是第一页和第二页的当前页码都为0.

用Debug跟踪了好久,才解决.贴出来,供自己参考,并请大家指点.

 

string  sql;
    GetData GD 
=   new  GetData();
    DataSet ds 
=   new  DataSet();
    SqlConnection conn;
    
int  PageSize; // 每页包含条数
     int  RecordCount; // 获得总记录数
     int  PageCount; // 获得总页数
     int  CurrentPage; // 当前页数

    
protected   void  Page_Load( object  sender, EventArgs e)
    
{
        
if (Session["username"== null || Session["id"== null)
        
{
            Response.Redirect(
"login.aspx");
        }


        conn 
= GD.Conn();
        conn.Open();
        
//设定PageSize
        PageSize = 4;

        
if (!IsPostBack)
        
{
            ViewState[
"CurrentPage"= 1;
            
//GetProductCollection();
            ViewState["PageIndex"= 0;
            
//计算总共有多少条记录
            RecordCount = CalculateRecord();
            lblCount.Text 
= RecordCount.ToString();
            lblCount2.Text 
= RecordCount.ToString();
            
//计算总共有多少页
            if (RecordCount == 0)
            
{
                PageCount 
= 1;
                lblPageCount.Text 
= "1";
            }

            
else
            
{
                PageCount 
= RecordCount % PageSize == 0 ? RecordCount / PageSize : RecordCount / PageSize + 1;
                lblPageCount.Text 
= PageCount.ToString();
            }

            
//if (PageCount == 0)
            
//{
            
//    lblPageCount.Text = "1";
            
//    //当前页显示从第几条到第几条
            
//    if (RecordCount == 0)
            
//    {
            
//        lblCurrentPageFirst.Text = "0";
            
//        lblCurrentPageLast.Text = "0";
            
//    }
            
//    else
            
//    {
            
//        lblCurrentPageFirst.Text = "1";
            
//        lblCurrentPageLast.Text = RecordCount.ToString();
            
//    }
            
//}
            
//else
            
//{
            
//    lblPageCount.Text = PageCount.ToString();
            
//    lblCurrentPageFirst.Text = Convert.ToString((Convert.ToInt32(ViewState["PageIndex"].ToString())) * PageSize + 1);
            
//    lblCurrentPageLast.Text = Convert.ToString(Convert.ToInt32(ViewState["PageIndex"].ToString() + 1) * PageSize);
            
//}
            
//if (PageCount == Convert.ToInt32(ViewState["PageIndex"].ToString()))
            
//{
            
//    lblCurrentPageLast.Text = PageCount.ToString();
            
//}
            
//保存总页数的值
            ViewState["PageCount"= PageCount;
            GetProductCollection();
        }



        
    }


    
/// <summary>
    
/// 获取收藏夹中商品的信息
    
/// </summary>

     public   void  GetProductCollection()
    
{
        
int startIndex;
        
//设定导入的起终地址
        startIndex = CurrentPage * PageSize;
        sql 
= "select * from product";
        DataSet ds 
= new DataSet();
        SqlCommand comm 
= new SqlCommand(sql, conn);
        SqlDataAdapter sda 
= new SqlDataAdapter(comm);
        sda.Fill(ds, startIndex, PageSize, 
"product");
        DataList1.DataSource 
= ds.Tables["product"].DefaultView;
        DataList1.DataBind();
        btnprev.Enabled 
= true;
        
//btnprev1.Enabled = true;
        btnnext.Enabled = true;
        
//btnnext1.Enabled = true;
        if (CurrentPage == (PageCount - 1))
        
{
            btnnext.Enabled 
= false;
            
//btnnext1.Enabled = false;
        }

        
if (CurrentPage == 0)
        
{
            btnprev.Enabled 
= false;
            
//btnprev1.Enabled = false;
        }

        
//当前页
        lblCurrentPage.Text = Convert.ToString((CurrentPage + 1));
        lblCurrentPage2.Text 
= Convert.ToString((CurrentPage + 1));
        TextBox1.Text 
= Convert.ToString((CurrentPage + 1));

        
//将其值保存在这个页面中
        ViewState["PageIndex"= CurrentPage;

        
if (PageCount == 0)
        
{            
            
//当前页显示从第几条到第几条
            if (RecordCount == 0)
            
{
                lblCurrentPageFirst.Text 
= "0";
                lblCurrentPageLast.Text 
= "0";
            }

            
else
            
{
                lblCurrentPageFirst.Text 
= "1";
                lblCurrentPageLast.Text 
= RecordCount.ToString();
            }

        }

        
else if (CurrentPage == 0)//当前页为第一页
        {
            lblCurrentPageFirst.Text 
= "1";
            lblCurrentPageLast.Text 
= PageSize.ToString();
        }

        
else
        
{
            lblCurrentPageFirst.Text 
= Convert.ToString((CurrentPage) * PageSize + 1);
            lblCurrentPageLast.Text 
= Convert.ToString((CurrentPage + 1* PageSize);
        }

        
if (PageCount == (CurrentPage + 1))//当前页为最后一页
        {
            lblCurrentPageLast.Text 
= lblCount.Text.ToString();
        }

    }


    
public   void  Page_OnClick(Object sender, CommandEventArgs e)
    
{
        
//当前页
        CurrentPage = (int)ViewState["PageIndex"];
        
//总页数
        PageCount = (int)ViewState["PageCount"];

        
string cmd = e.CommandName;
        
//判断cmd,以判定翻页方向
        switch (cmd)
        
{
            
case "btnnext":
                
if (CurrentPage < (PageCount - 1)) CurrentPage++;
                
break;
            
case "btnprev":
                
if (CurrentPage > 0) CurrentPage--;
                
break;

            
//    //最后一页
            
//case "btnlast":
            
//    CurrentPage = PageCount - 1;
            
//    break;
            
//    //第一页
            
//default:
            
//    CurrentPage = System.Convert.ToInt32(cmd);
            
//    break;
        }

        
//当前页
        ViewState["PageIndex"= CurrentPage;        
        GetProductCollection();
    }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值