最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

DataGridView使用BindingNavigator實(shí)現(xiàn)簡(jiǎn)單分頁(yè)功能

 更新時(shí)間:2019年11月18日 08:53:17   作者:縹緲的塵埃  
這篇文章主要介紹了DataGridView使用BindingNavigator實(shí)現(xiàn)簡(jiǎn)單分頁(yè)功能,本文主要是通過(guò)借用BindingNavigator空殼,文中通過(guò)實(shí)例代碼講解的非常詳細(xì),需要的朋友可以參考下

上篇文章給大家介紹DataGridView使用自定義控件實(shí)現(xiàn)簡(jiǎn)單分頁(yè)功能,本篇使用BindingNavigator來(lái)實(shí)現(xiàn)簡(jiǎn)單分頁(yè)功能。其實(shí)也只是借用了一個(gè)BindingNavigator空殼,

實(shí)現(xiàn)原理和代碼與上一篇幾乎一樣,實(shí)現(xiàn)方法如下:

 1、新建一個(gè)WinForm程序,命名為BindingNavigatorMain,并拖入一個(gè)DataGridView控件及一個(gè)BindingNavigator控件。在BindingNavigator右下角彈窗中添加

一個(gè)Button(轉(zhuǎn)到),BindingNavigator的樣式如下:

    2、BindingNavigatorMain的代碼如下:      

private int pageSize; //每頁(yè)顯示記錄數(shù)
  private int pageIndex; //頁(yè)序號(hào)
  private int totalCount; //總記錄數(shù)
  private int pageCount; //總頁(yè)數(shù)
  public BindingNavigatorMain()
  {
   InitializeComponent();
  }
  private void BindingNavigatorMain_Load(object sender, EventArgs e)
  {
   pageSize = 20;
   pageIndex = 0;
   SetPage();
  }
  //設(shè)置頁(yè)
  private void SetPage()
  {
   //總記錄數(shù)
   totalCount = 0;
   BindPage(pageSize, pageIndex + 1, out totalCount);
   //總頁(yè)數(shù)
   if (totalCount % pageSize == 0)
    pageCount = totalCount / pageSize;
   else
    pageCount = totalCount / pageSize + 1;
   //當(dāng)前頁(yè)及總頁(yè)數(shù)
   txtCurrentPage.Text = (pageIndex + 1).ToString();
   lblTotalPage.Text = "共 " + pageCount.ToString() + " 頁(yè)";
   //BindingNavigator數(shù)據(jù)源不進(jìn)行BindingSource賦值,但恢復(fù)控件可用性。
   bindingNavigatorMoveFirstItem.Enabled = true;
   bindingNavigatorMovePreviousItem.Enabled = true;
   txtCurrentPage.Enabled = true;
   lblTotalPage.Enabled = true;
   bindingNavigatorMoveNextItem.Enabled = true;
   bindingNavigatorMoveLastItem.Enabled = true;
  }
  /// <summary>
  /// 綁定頁(yè)
  /// </summary>
  /// <param name="pageSize">每頁(yè)顯示記錄數(shù)</param>
  /// <param name="pageIndex">頁(yè)序號(hào)</param>
  /// <param name="totalCount">總記錄數(shù)</param>
  private void BindPage(int pageSize, int pageIndex, out int totalCount)
  {
   SqlConnection conn = null;
   SqlCommand cmd = null;
   totalCount = 0;
   #region 連接數(shù)據(jù)庫(kù)測(cè)試
   try
   {
    //數(shù)據(jù)庫(kù)連接
    conn = new SqlConnection("server=.;database=DB_TEST;Uid=sa;pwd=********;");
    conn.Open();
    //SqlCommand
    cmd = new SqlCommand();
    cmd.Connection = conn;
    cmd.CommandText = "PageTest";
    cmd.CommandType = CommandType.StoredProcedure;
    SqlParameter[] param =
    {
     new SqlParameter("@PageSize",SqlDbType.Int),
     new SqlParameter("@PageIndex",SqlDbType.Int),
     new SqlParameter("@TotalCount",SqlDbType.Int)
    };
    param[0].Value = pageSize;
    param[1].Value = pageIndex;
    param[2].Direction = ParameterDirection.Output;
    cmd.Parameters.AddRange(param);
    //DataTable
    DataTable dt = new DataTable("MF_MO");
    dt.Columns.Add(new DataColumn("MO_NO", typeof(String)));
    dt.Columns.Add(new DataColumn("MRP_NO", typeof(String)));
    dt.Columns.Add(new DataColumn("QTY", typeof(Decimal)));
    dt.Columns.Add(new DataColumn("BIL_NO", typeof(String)));
    #region 方法一:SqlDataReader
    SqlDataReader dr = cmd.ExecuteReader();
    dt.Load(dr, LoadOption.PreserveChanges);
    dr.Close();
    totalCount = (int)param[2].Value;
    dataGridView1.DataSource = dt;
    #endregion
    #region #方法二:SqlDataAdapter
    //SqlDataAdapter da = new SqlDataAdapter();
    //da.SelectCommand = cmd;
    //dt.BeginLoadData();
    //da.Fill(dt);
    //dt.EndLoadData();
    //totalCount = (int)param[2].Value;
    //dataGridView1.DataSource = dt;
    #endregion
   }
   catch (Exception ex)
   {
    MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
   }
   finally
   {
    conn.Close();
    cmd.Dispose();
   }
   #endregion
  }
  /// <summary>
  /// 首頁(yè)
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void bindingNavigatorMoveFirstItem_Click(object sender, EventArgs e)
  {
   pageIndex = 0;
   SetPage();
  }
  /// <summary>
  /// 上一頁(yè)
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void bindingNavigatorMovePreviousItem_Click(object sender, EventArgs e)
  {
   pageIndex--;
   if (pageIndex < 0)
   {
    pageIndex = 0;
   }
   SetPage();
  }
  /// <summary>
  /// 下一頁(yè)
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void bindingNavigatorMoveNextItem_Click(object sender, EventArgs e)
  {
   pageIndex++;
   if (pageIndex > pageCount - 1)
   {
    pageIndex = pageCount - 1;
   }
   SetPage();
  }
  /// <summary>
  /// 末頁(yè)
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void bindingNavigatorMoveLastItem_Click(object sender, EventArgs e)
  {
   pageIndex = pageCount - 1;
   SetPage();
  }
  /// <summary>
  /// 只能按0-9、Delete、Enter、Backspace鍵
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void txtCurrentPage_KeyPress(object sender, KeyPressEventArgs e)
  {
   if ((e.KeyChar >= 48 && e.KeyChar <= 57) || e.KeyChar == 8 || e.KeyChar == 13 || e.KeyChar == 127)
   {
    e.Handled = false;
    if (e.KeyChar == 13)
    {
     Go();
    }
   }
   else
   {
    e.Handled = true;
   }
  }
  /// <summary>
  /// 指定頁(yè)
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void btnGo_Click(object sender, EventArgs e)
  {
   Go();
  }
  private void Go()
  {
   if (string.IsNullOrEmpty(txtCurrentPage.Text))
   {
    MessageBox.Show("指定頁(yè)不能為空。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
    txtCurrentPage.Focus();
    return;
   }
   if (int.Parse(txtCurrentPage.Text) > pageCount)
   {
    MessageBox.Show("指定頁(yè)已超過(guò)總頁(yè)數(shù)。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
    txtCurrentPage.Focus();
    return;
   }
   pageIndex = int.Parse(txtCurrentPage.Text) - 1;
   SetPage();
  }

    3、SQL Server創(chuàng)建存儲(chǔ)過(guò)程PageTest:

CREATE PROCEDURE [dbo].[PageTest]
 @PageSize INT,
 @PageIndex INT,
 @TotalCount INT OUTPUT
AS
BEGIN
 --總記錄數(shù)
 SELECT @TotalCount=COUNT(1) FROM MF_MO
 --記錄返回(使用動(dòng)態(tài)SQL繞開(kāi)參數(shù)嗅探問(wèn)題,效率大幅度提升。)
 DECLARE @SQL NVARCHAR(1000)
 SET @SQL=
  'SELECT TOP ('+CONVERT(VARCHAR(32),@PageSize)+') MO_NO,MRP_NO,QTY,BIL_NO '+
  'FROM MF_MO A '+
  'WHERE NOT EXISTS (SELECT 1 FROM (SELECT TOP ('+CONVERT(VARCHAR(32),(@PageIndex-1)*@PageSize)+') MO_NO FROM MF_MO ORDER BY MO_NO) B WHERE A.MO_NO=B.MO_NO) '+
  'ORDER BY MO_NO'
 EXEC (@SQL)
END

    4、執(zhí)行程序:

    好了,分享就到此結(jié)束了,希望對(duì)有此需要的人有一些幫助。

   總結(jié)

以上所述是小編給大家介紹的DataGridView使用BindingNavigator實(shí)現(xiàn)簡(jiǎn)單分頁(yè)功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

最新評(píng)論

湄潭县| 沙坪坝区| 巫山县| 双牌县| 灌南县| 永兴县| 天台县| 洪江市| 鹤壁市| 天长市| 宁都县| 安福县| 新兴县| 安丘市| 潼南县| 赞皇县| 增城市| 安福县| 钦州市| 涟水县| 宁化县| 罗山县| 达日县| 大丰市| 乐业县| 固安县| 阿克苏市| 油尖旺区| 任丘市| 长岭县| 顺平县| 东乌珠穆沁旗| 建平县| 那坡县| 庐江县| 扬中市| 五大连池市| 赤城县| 息烽县| 太仓市| 犍为县|