public static List<empextender> getAllemp(int PageSize,int PageIndex)
        {
            string sql = "select *  from (select empname,empid,sex,row_number() over(order by empid asc) rn from andy_shen_emp_infomation)"
                                +" where rownum<=:PageSize "
                                +"and empid not in"
                                +"(select empid  from (select empname,empid,sex,row_number() over(order by empid asc) rn from andy_shen_emp_infomation)"
                                + " where rn <=(:PageSize*:PageIndex))"
                                + "and rn<=(:PageSize*:PageIndex*2) and rn>=(:PageSize*:PageIndex) ";
            List<empextender> list = new List<empextender>();
            OracleParameter[] para = new OracleParameter[] { 
                new OracleParameter(":PageSize",PageSize),
                new OracleParameter(":PageIndex",PageIndex),
            };
            DataSet ds = OracleHelper.getDataSet(OracleHelper.web2Constring, sql, CommandType.Text, para);
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                empextender var = new empextender();
                var.EMPID = dr["EMPID"].ToString();
                var.EMPNAME = dr["EMPNAME"].ToString();
                var.rn = Convert.ToInt32(dr["rn"].ToString());
                var.SEX = dr["SEX"].ToString();
                var.PageSize = Convert.ToInt32(dr["PageSize"].ToString());
                var.PageIndex = Convert.ToInt32(dr["PageIndex"].ToString());
                list.Add(var);
            }
            return list;
        }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Model;
using BLL;public partial class Repeater : System.Web.UI.Page
{
    private int _PageIndex;    public int PageIndex
    {
        get { return Convert.ToInt32(ViewState["PageIndex"]); }
        set
        {
            if (ViewState["PageIndex"] != null)
            {
                _PageIndex = Convert.ToInt32(ViewState["PageIndex"]); 
            }              
        }
    }
    private int _PageSize;    public int PageSize
    {
        get { return Convert.ToInt32(ViewState["PageSize"]); }
        set { _PageSize = Convert.ToInt32(ViewState["PageSize"]); }
    }    private int _PageCount;    public int PageCount
    {
        get { return Convert.ToInt32(ViewState["PageCount"]); }
        set { _PageCount = Convert.ToInt32(ViewState["PageCount"]); }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
                if(!Page.IsPostBack)
        {
            bindRe();
            ViewState["PageIndex"] = 1;
            ViewState["PageSize"] = 5;
            int recount = calc();            int PageCount = recount % PageSize == 0 ? recount / PageSize : ((recount / PageSize )+ 1); //总共几页
            ViewState["PageCount"] = PageCount;            this.lblcurr.Text = ViewState["curr"].ToString();
            this.lblPageCount.Text = ViewState["PageCount"].ToString();
        }
    }    private int calc()
    {
        List<empextender> list = Manager.getAllemp(5, Convert.ToInt32(ViewState["PageCount"]));
        int recount = list.Count;
        return recount;
    }    private void bindRe()
    {
      //ViewState["PageIndex"] = 1;
      
        //int PageSize = 6; //每页显示6        List<empextender> list = Manager.getAllemp(5, Convert.ToInt32(ViewState["PageCount"]));      //  int recount = list.Count; //总记录        //int PageCount = recount % PageSize == 0 ? recount / PageSize : recount / PageSize+1; //总共几页
        //ViewState["PageCount"] = PageCount;        this.Repeater1.DataSource = list;        this.Repeater1.DataBind();        //this.lblcurr.Text = ViewState["curr"].ToString();
        //this.lblPageCount.Text = ViewState["PageCount"].ToString();        BindBtn();
    }    private void BindBtn()
    {
       int currentPage = Convert.ToInt32(ViewState["PageIndex"]);
        //ViewState["curr"] = currentPage;
        //if(currentPage+1>1)
        //{
        //    this.btnPre.Enabled=true;
        //    this.btnNext.Enabled = true;
        //    this.btnFir.Enabled = true;
        //    this.btnEnd.Enabled = true;
        //}        if(currentPage==PageCount)
        {
            this.btnPre.Enabled = true;
            this.btnNext.Enabled = false;
            this.btnFir.Enabled = true;
            this.btnEnd.Enabled = false;
        }        if(currentPage==1)
        {
            this.btnPre.Enabled = false;
            this.btnNext.Enabled = true;
            this.btnFir.Enabled = false;
            this.btnEnd.Enabled = true;
        }
    }    
    protected void btnFir_Click(object sender, EventArgs e)
    {
        ViewState["PageIndex"] = 1;
        bindRe();
    }
    protected void btnPre_Click(object sender, EventArgs e)
    {
       ViewState["PageIndex"] = Convert.ToInt32(ViewState["PageIndex"])-1;
        bindRe();
    }
    protected void btnNext_Click(object sender, EventArgs e)
    {
        ViewState["PageIndex"] = Convert.ToInt32(ViewState["PageIndex"]) + 1;
        bindRe();
    }
    protected void btnEnd_Click(object sender, EventArgs e)
    {
        ViewState["PageIndex"] = PageCount;
        bindRe();
    }
} public class empextender : emp 
    {
        private int _PageIndex;        public int PageIndex
        {
            get { return _PageIndex; }
            set { _PageIndex = value; }
        }        private int _PageSize;        public int PageSize
        {
            get { return _PageSize; }
            set { _PageSize = value; }
        }        private int _rn;        public int rn
        {
            get { return _rn; }
            set { _rn = value; }
        }
    这是分页代码,model中我是用了扩展类,运行时报ORA-01008: not all variables bound求解!!!!!!!!!!1ASP.NET对象SQL

解决方案 »

  1.   

    这么多代码,懒得看
    分页用ASPNETPager就行了,很简单http://www.webdiyer.com/Controls/AspNetPager/
      

  2.   

    这位兄台,分页只是样式,数据传递,你应该会,仅此而已,不要用那么多的服务器控件ASPNETPager也只是展示而已 不知道那个绑定两次解决了没有,好久没用了都是自己写的
      

  3.   

    这样说吧,分页的展示其实就是一个a链接可用和不可用的问题 <a disabled="disabled">首页</a><a href="?page=2">下一页</a>然后外面套一个div 自己控制数据展示自己写for循环,repeater也是for循环啊,好多用repeater嵌套,感觉很无语,为何不用二维数组来解决,话跑题了。。<div class="fenye"><a disabled="disabled">首页</a><a disabled="disabled">上一页</a><span class="current">1</span><a href="?page=2">2</a><a href="?page=3">3</a><a href="?page=4">4</a><a href="?page=5">5</a><a href="?page=6">6</a><a href="?page=2">下一页</a><a href="?page=6">尾页</a>   共6页</div>
    </div>
      

  4.   

    <span class="current">1</span> 是当前第几页你不想被人家的控件一直控制吧,没有服务器控件了,你怎么办,还得自己写,自己写完以后,你发现就是那么简单,调用更方便 这个会了 ajax分页,随手拈来 因为原理一个样子
      

  5.   

    这么多代码,懒得看
    分页用ASPNETPager就行了,很简单http://www.webdiyer.com/Controls/AspNetPager/