我用一下代码实现翻页,但是却出现一种现象就是一会儿能翻页一会儿不能翻页
比如我点击下一页 这次不能翻页 但我关了 重新点击下一页 也许就能翻页了 我想问这到底是这么回事
是我代码问题还是我系统问题
如果是我代码 请指出错误在哪
如果是我系统问题 请说下系统到底哪部分影响了他的这项翻页功能 谢谢
    //datalist翻页功能
    public void tiger()
    {
        PagedDataSource pd;   //用来翻页的
        Dataset rs=new Dataset();
        data11.conn1();      //连接数据库
        rs=data11.adapter1("select * from message order by id desc");   //设置查询内容 并获取内容
        pd = new PagedDataSource();            
        pd.AllowPaging = true;
        pd.CurrentPageIndex = int.Parse(this.Label2.Text) - 1;
        pd.PageSize = 2;
        pd.DataSource = rs.Tables[0].DefaultView;
        this.DataList1.DataSource = pd;        
        this.DataBind();
        //如果不加入这些判断的话,显示页面正常,但读出的数据会有问题
        if (rs.Tables[0].Rows.Count % 2 == 0)      
        {
            if (!pd.IsLastPage)
            {
                this.Label3.Text = Convert.ToString(Convert.ToInt32(pd.Count.ToString()) + 1);
            }
            else
            {
                this.Label3.Text = Label2.Text;
            }
        }
        else
        {
            if (!pd.IsLastPage)
            {
                this.Label3.Text = Convert.ToString(Convert.ToInt32(pd.Count.ToString()) + 2);
            }
            else
            {
                this.Label3.Text = Label2.Text;
            }
        }
        data11.rsclose();
        data11.connclose();
    }

解决方案 »

  1.   

    pd.CurrentPageIndex = int.Parse(this.Label2.Text) - 1; 

    你翻页的页码是通过Label2.Text来获取的,但你翻页后没有把Label2.Text加1啊
      

  2.   

    回复1楼的 
    Label2.Text有进行加1
    上面那个只是处理函数
    Label2.Text处理:
       //首页
        protected void Button1_Click(object sender, EventArgs e)
        {
            Label2.Text = "1";
            tiger();
        }    //上一页
        protected void Button2_Click(object sender, EventArgs e)
        {
            try
            {
                int num = Convert.ToInt32(Label2.Text) - 1;
                Label2.Text = num.ToString();
                tiger();
            }
            catch
            {
                Label2.Text = "1";
                tiger();
            }
        }    //下一页
        protected void Button3_Click(object sender, EventArgs e)
        {
            try
            {
                int labe2 = Convert.ToInt32(Label2.Text);
                int labe3 = Convert.ToInt32(Label3.Text);
                if (labe2 >= labe3)
                {
                    Label2.Text = Label3.Text;
                    tiger();
                }
                else
                {
                    int num = Convert.ToInt32(Label2.Text) + 1;
                    Label2.Text = num.ToString();
                    tiger();
                }
            }
            catch
            {
                Label2.Text = Label3.Text;
                tiger();
            }    }    //最后一页
        protected void Button4_Click(object sender, EventArgs e)
        {
            Label2.Text = Label3.Text;
            tiger();
        }
    回复2楼的 能不能指出我的那样写错在哪
    我就是看网上别人datalist也是这样写的 所以才跟着写的
      

  3.   

    Convert.ToString(Convert.ToInt32(pd.Count.ToString()) + 1); 
    你的页数算的不对啊,怎么直接用记录数加1?
      

  4.   

    pd.CurrentPageIndex = int.Parse(this.Label2.Text) - 1; 
    这句是实现指定页数的,但是你好像没有什么代码使得label2进行更变,使得CurrentPageIndex为同一值。
    不知对不对。
      

  5.   

    pagecount=(int)math.ceiling((double)recordcount/(double)pagesize);
    没看懂你说什么。
      

  6.   

    label2是当前页的显示
    label3是总页数的显示
      

  7.   

    使用LinkButton吧
    或者参考petshop4.0里面,有个datalisth分页的效果