<div>
                    <span style="font-size: 10pt">
                        共有<asp:Label ID="lblRecordCount" runat="server" ForeColor="red"></asp:Label>条记录
                        当前为<asp:Label ID="lblCurrentPage" runat="server" ForeColor="Red"></asp:Label>/<asp:Label
                            ID="lblPageCount" runat="server" ForeColor="Red"></asp:Label>页 &nbsp;<asp:DropDownList
                                ID="Ddl_PageNumber" runat="server" AutoPostBack="true" CssClass="lanyu">
                            </asp:DropDownList></span>
                <td style="width: 100px; height: 21px; text-align: right;">
                <asp:linkbutton   id="BtnFirst"   runat="server"   Text="首页"   OnCommand="Page_OnClick" 
  CommandName="First" Font-Size="10pt">首页</asp:linkbutton>
                        <asp:LinkButton ID="lbnPrevPage" runat="server" CommandName="prev" OnCommand="Page_OnClick"
                            Text="上一页" Font-Size="10pt"></asp:LinkButton>&nbsp;
                    <asp:LinkButton ID="lbnNextPage" runat="server" CommandName="next" OnCommand="Page_OnClick"
                            Text="下一页" Font-Size="10pt"></asp:LinkButton>
                            <asp:linkbutton   id="BtnLast"   OnCommand="Page_OnClick" CommandName="Last"  
  text="尾页"   Runat="server" Font-Size="10pt">尾页</asp:linkbutton>
</div>


.aspx.cs

    string constr = (ConfigurationManager.ConnectionStrings["pconn"]).ToString();
    int PageSize, RecordCount, PageCount, CurrentPage, i;
    ArrayList Al_PageNum;

    public void Page_Load(Object src, EventArgs e)
    {
        PageSize = 4;               //设定PageSize
        SqlConnection MyConn = new SqlConnection(constr);
        MyConn.Open();
        if (!Page.IsPostBack)                  //第一次请求执行
        {
            RecordCount = CalculateRecord(); //计算总共有多少记录/

            PageCount = RecordCount / PageSize; //计算总共有多少页
            if (RecordCount % PageSize > 0)     //取整
                PageCount = PageCount + 1;
            lblPageCount.Text = PageCount.ToString();
            lblRecordCount.Text = RecordCount.ToString();
            ViewState["PageCount"] = PageCount;
            CurrentPage = 0;
            ViewState["PageIndex"] = 0;

            Al_PageNum = new ArrayList();//绑定DROPDOWNLIST
            for (i = 1; i <= PageCount; i++)   //从1开始循环,为了不出现0页码
                Al_PageNum.Add(i.ToString());
            Ddl_PageNumber.DataSource = Al_PageNum;
            Ddl_PageNumber.DataBind();

            ListBind();                         //绑定
        }
        MyConn.Close();
    }

    public int CalculateRecord()                //计算总共有多少条记录
    {
        SqlConnection MyConn = new SqlConnection(constr);
        int intCount;
        string strCount = "select count(*) as co from v1";
        SqlCommand MyComm = new SqlCommand(strCount, MyConn);
        MyConn.Open();
        SqlDataReader dr = MyComm.ExecuteReader();
        if (dr.Read())
        {
            intCount = Int32.Parse(dr["co"].ToString());
        }
        else
        {
            intCount = 0;
        }
        dr.Close();
        MyConn.Close();
        return intCount;
    }


    ICollection CreateSource()
    {
        SqlConnection MyConn = new SqlConnection(constr);

        int StartIndex;                               //设定导入的起终地址
        StartIndex = CurrentPage * PageSize;            //计算记录数的起始点
        string strSel = "select * from v1 order by proid desc";
        DataSet ds = new DataSet();
        SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel, MyConn);
        MyAdapter.Fill(ds, StartIndex, PageSize, "v1");
        return ds.Tables["v1"].DefaultView;
    }

    public void ListBind()
    {
        MyList.DataSource = CreateSource();
        MyList.DataBind();
        lbnNextPage.Enabled = true;
        lbnPrevPage.Enabled = true;
        BtnFirst.Enabled = true;
        BtnLast.Enabled = true;
        if (PageCount == 0)
        {
            lblCurrentPage.Text = "0";
            lbnNextPage.Enabled = false;
            lbnPrevPage.Enabled = false;
            BtnFirst.Enabled = false;
            BtnLast.Enabled = false;
        }
        else
        {
            if (CurrentPage == (PageCount - 1)) lbnNextPage.Enabled = false;
            if (CurrentPage == 0) lbnPrevPage.Enabled = false;
            lblCurrentPage.Text = (CurrentPage + 1).ToString();
        }
        Ddl_PageNumber.Text = lblCurrentPage.Text;
    }

    public void Page_OnClick(Object sender, CommandEventArgs e)
    {
        CurrentPage = (int)ViewState["PageIndex"];
        PageCount = (int)ViewState["PageCount"];
        string cmd = e.CommandName;                 //判断cmd,以判定翻页方向

        switch (cmd)
        {
            case "next":
                if (CurrentPage < (PageCount - 1)) CurrentPage++;
                break;
            case "prev":
                if (CurrentPage > 0) CurrentPage--;
                break;
            case "Last":
                CurrentPage = (PageCount - 1);
                break;
            default:
                CurrentPage = 0;
                break;
        }

        ViewState["PageIndex"] = CurrentPage;
        ListBind();
    }
    public void PageNum_SelectIndexChanged(object sender, System.EventArgs e)
    {
        ViewState["PageIndex"] = int.Parse(Ddl_PageNumber.SelectedItem.Value) - 1;//保持不出现0页码
        PageSize = 4;
        CurrentPage = (int)ViewState["PageIndex"];
        PageCount = (int)ViewState["PageCount"];
        ListBind();
        //MyList.DataSource = CreateSource();
        //MyList.DataBind();
    }

    override protected void OnInit(EventArgs e)
    {
        InitializeComponent();
        base.OnInit(e);
    }

    private void InitializeComponent()
    {
        this.Load += new System.EventHandler(this.Page_Load);
        this.Ddl_PageNumber.SelectedIndexChanged += new System.EventHandler(this.PageNum_SelectIndexChanged);
    }

posted on 2007-06-22 17:31  陈十陵  阅读(4269)  评论(4编辑  收藏  举报