標籤: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
}