winform 分頁

來源:互聯網
上載者:User

標籤:winform   分頁   

說明:(1)如果對分頁的感興趣的話,可以看一下我傳的預存程序(“SQL 預存程序 分頁”)  

            (2)分頁,第一頁、上一頁,下一頁、最後一頁只調用點擊(click)事件即可;如果想要實用性的好的話,txtNowPage,需              要調用3個事件,點擊事件(click)、離開事件(leave)、目標按下事件(keypress)。


代碼實現如下:

public void DataBind()

        {
            #region 資料繫結
            GetWhere();
            object[] page = new object[8];
            page[0] = "表或視圖";
            page[1] = " 欄位名稱 ";
            page[2] = pagesize;//沒有多少條記錄
            page[3] = nowpage;//當前頁碼
            page[4] = strWhere;//查詢條件
            page[5] = "表的主鍵";
            page[6] = sumpage;//總頁數
            page[7] = sizecount;//總條數
            DataSet dset = new DataSet();
            dset = DataAccess.GetDataSet("P_Public_Paging", true, page);
            dgvMainTop.DataSource = dset.Tables[0];
            sumpage = Convert.ToInt32(dset.Tables[1].Rows[0][0].ToString());
            sizecount = Convert.ToInt32(dset.Tables[1].Rows[0][1].ToString());           
            lblSumCount.Text = "(共" + sizecount + "條記錄)";
            txtNowPage.Text = nowpage + "/" + sumpage;
            PageState();           //分頁狀態 

        }   

  private void PageState()
        {
            #region  分頁按鈕狀態
            if (sumpage <= 1)
            {
                btnUp.Enabled = false;
                btnNext.Enabled = false;
                btnFirst.Enabled = false;
                btnEnd.Enabled = false;
            }
            else
            {
                if (nowpage == 1)
                {
                    btnFirst.Enabled = false;
                    btnEnd.Enabled = true;
                    btnUp.Enabled = false;
                    btnNext.Enabled = true;
                }
                else if (nowpage == sumpage)
                {
                    btnUp.Enabled = true;
                    btnNext.Enabled = false;
                    btnFirst.Enabled = true;
                    btnEnd.Enabled = false;
                }
                else
                {
                    btnUp.Enabled = true;
                    btnNext.Enabled = true;
                    btnFirst.Enabled = true;
                    btnEnd.Enabled = true;
                }
            }
            #endregion
        }

        private void btnFirst_Click(object sender, EventArgs e)
        {
            #region  第一頁按鈕事件
            DataBind();
            #endregion
        }

        private void btnUp_Click(object sender, EventArgs e)
        {
            #region 上一頁按鈕事件
            nowpage--;
            DataBind();
            #endregion
        }

        private void btnNext_Click(object sender, EventArgs e)
        {
            #region 下一頁按鈕事件
            nowpage++;
            DataBind();
            #endregion
        }

        private void btnEnd_Click(object sender, EventArgs e)
        {
            #region  最後一頁按鈕事件
            nowpage = sumpage;
            DataBind();
            #endregion
        }

        private void txtNowPage_KeyPress(object sender, KeyPressEventArgs e)
        {
            #region 頁碼輸入限制,允許輸入0-9數字 回退鍵  斷行符號鍵
            e.Handled = true;
            if (e.KeyChar >= ‘0‘ && e.KeyChar <= ‘9‘ || e.KeyChar == 8)
            {
                e.Handled = false;
            }
            if (e.KeyChar == 13)
            {
                btnFind.Focus();
            }
            #endregion
        }

        private void txtNowPage_Leave(object sender, EventArgs e)
        {
            #region 設定當前頁 最大為總頁數 最小1
            if (txtNowPage.Text == string.Empty)
            {
                nowpage = 1;
                txtNowPage.Text = nowpage + "/" + sumpage;
            }
            string strpage = txtNowPage.Text.Trim();
            string[] array = strpage.Split(‘/‘);
            txtNowPage.Text = array[0];
            int page = int.Parse(array[0]);

            if (page <= 1)
            {
                nowpage = 1;
                txtNowPage.Text = nowpage + "/" + sumpage;
            }
            if (page > sumpage)
            {
                nowpage = sumpage;
                txtNowPage.Text = nowpage + "/" + sumpage;
            }
            if (page > 1 && page <= sumpage)
            {
                nowpage = page;
            }
            DataBind();
            #endregion
        }

        private void txtNowPage_Click(object sender, EventArgs e)
        {
            #region  單擊頁碼文字框
            string strpage = txtNowPage.Text.Trim();
            string[] array = strpage.Split(‘/‘);
            txtNowPage.Text = array[0];
            txtNowPage.Focus();
            txtNowPage.SelectAll();
            #endregion
        }    

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.