接上一篇《DataGridView使用自定义控件实现简单分页功能》,本篇使用BindingNavigator来实现简单分页功能。其实也只是借用了一个BindingNavigator空壳,

实现原理和代码与上一篇几乎一样,实现方法如下:

 1、新建一个WinForm程序,命名为BindingNavigatorMain,并拖入一个DataGridView控件及一个BindingNavigator控件。在BindingNavigator右下角弹窗中添加

一个Button(转到),BindingNavigator的样式如下:

2、BindingNavigatorMain的代码如下:

        private int pageSize;   //每页显示记录数private int pageIndex;  //页序号private int totalCount; //总记录数private int pageCount;  //总页数public BindingNavigatorMain(){InitializeComponent();}private void BindingNavigatorMain_Load(object sender, EventArgs e){pageSize = 20;pageIndex = 0;SetPage();}//设置页private void SetPage(){//总记录数totalCount = 0;BindPage(pageSize, pageIndex + 1, out totalCount);//总页数if (totalCount % pageSize == 0)pageCount = totalCount / pageSize;elsepageCount = totalCount / pageSize + 1;//当前页及总页数txtCurrentPage.Text = (pageIndex + 1).ToString();lblTotalPage.Text = "共 " + pageCount.ToString() + " 页";//BindingNavigator数据源不进行BindingSource赋值,但恢复控件可用性。bindingNavigatorMoveFirstItem.Enabled = true;bindingNavigatorMovePreviousItem.Enabled = true;txtCurrentPage.Enabled = true;lblTotalPage.Enabled = true;bindingNavigatorMoveNextItem.Enabled = true;bindingNavigatorMoveLastItem.Enabled = true;}/// <summary>/// 绑定页/// </summary>/// <param name="pageSize">每页显示记录数</param>/// <param name="pageIndex">页序号</param>/// <param name="totalCount">总记录数</param>private void BindPage(int pageSize, int pageIndex, out int totalCount){SqlConnection conn = null;SqlCommand cmd = null;totalCount = 0;#region 连接数据库测试try{//数据库连接conn = new SqlConnection("server=.;database=DB_TEST;Uid=sa;pwd=********;");conn.Open();//SqlCommandcmd = 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);//DataTableDataTable 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 方法一:SqlDataReaderSqlDataReader 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>/// 首页/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void bindingNavigatorMoveFirstItem_Click(object sender, EventArgs e){pageIndex = 0;SetPage();}/// <summary>/// 上一页/// </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>/// 下一页/// </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>/// 末页/// </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>/// 指定页/// </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("指定页不能为空。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);txtCurrentPage.Focus();return;}if (int.Parse(txtCurrentPage.Text) > pageCount){MessageBox.Show("指定页已超过总页数。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);txtCurrentPage.Focus();return;}pageIndex = int.Parse(txtCurrentPage.Text) - 1;SetPage();}

3、SQL Server创建存储过程PageTest:

CREATE PROCEDURE [dbo].[PageTest]@PageSize INT,@PageIndex INT,@TotalCount INT OUTPUT
AS
BEGIN--总记录数SELECT @TotalCount=COUNT(1) FROM MF_MO--记录返回(使用动态SQL绕开参数嗅探问题,效率大幅度提升。)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、执行程序:

好了,分享就到此结束了,希望对有此需要的人有一些帮助。

C# DataGridView使用BindingNavigator实现简单分页功能相关推荐

  1. jQuery实现的简单分页功能的详细解析

    分页功能在项目开发中不可或缺,老司机操作起来就和呼吸一样简单,新手恐怕就会吃力一些. 今天我回顾了一下具体的操作步骤,决定详细的分析一下每一步的实现目的及原理. 我们会创建一个简单的json文件来模拟 ...

  2. php的简单分页功能

    写程序的时候需要对信息进行查看,但数据量太大的时候,上下滚动会麻烦并且太多数据看着头疼,这个时候可以做一个分页功能.我写的这个比较简单的分页,可以根据自己的情况,对切页的操作进行修改,例如:增加一个跳 ...

  3. servlet和jsp实现简单分页功能

    最近在做毕设,需要写一个管理系统,对几个框架也不很是很熟练,所以就打算servlet和jsp来做这个项目. 其中分页是比较麻烦的一个问题,就在慕课网上找了视频看,整理了实现步骤.大家可以直接看我博客, ...

  4. DataGridView使用bindingNavigator实现分页功能(应用存储过程)

    想法是这样的:使用bindingNavigator+存储过程实现DataGridView的分页功能,其中包含简单的查询. 存储过程如下: --创建分页查询存储过程(含输出参数,输入参数(含搜索功能)) ...

  5. python嵌入html_Python odoo中嵌入html简单的分页功能

    在odoo中,通过iframe嵌入 html,页面数据则通过controllers获取,使用jinja2模板传值渲染 html页面分页内容,这里写了判断逻辑 首页 {% if current_page ...

  6. php按数字分页类,PHP简单实现数字分页功能示例

    本文实例讲述了PHP简单实现数字分页功能.分享给大家供大家参考,具体如下: header ( 'Content-Type: text/html; charset=utf-8' ); //分页 $pag ...

  7. 简单的beego分页功能代码

    一个简单的beego分页小插件(源代码在最下面): 支持条件查询 支持参数保留 支持自定义css样式 支持表/视图 支持参数自定义 默认为pno 支持定义生成链接的个数 使用方式: 1)action中 ...

  8. jquery实现简单的分页功能

    jquery实现简单的分页功能 本文适合少量数据的使用,如果数据条数过多,不太适合! 页面html代码 <table> <!--展示数据的表格--> </table> ...

  9. 简单分页,无需插件 实现 上一页|下一页 分页功能

    分页功能 五花八门,插件的使用也很方便.最近做项目,分页功能是写好的了,利用bootstarp 简单实现的, 类似于这种 但由于数据越来越多,这种循环的方式很不好看.于是想到上一页| 下一页 分页 的 ...

最新文章

  1. 结构体类型、联合体类型
  2. python和什么一起学_[lvog1]和小菜一起学python(零基础开始学习)
  3. 天津鑫茂工业园区--------------三维虚拟现实系统
  4. 用装饰器设计模式装饰
  5. 【计算机网络】TCP三次握手
  6. mysql where 大小写_java – 使用select where where Mysql在Mysql中区分大小写
  7. Fluent NHibernate实战(原创)
  8. Croc Champ 2013 - Round 1 E. Copying Data(线段树)
  9. android双击回到顶部,Android之双击回到顶部
  10. 【每日早报】2019/07/17
  11. 如何利用计算机截屏快捷键,电脑怎么截图 电脑选区域截图怎么截 电脑截图快捷键是什么...
  12. Notes Domino V12Beta划重点
  13. Windows基础 加固
  14. 如何建立高绩效的团队
  15. 焦距换算倍率(Focal length ratio)
  16. 考研复试——英文日常问答
  17. 毕业设计:基于汇编实现的欢乐QQ堂小游戏 附完整代码
  18. 【LaTeX】LaTeX新手入门教程-基础排版
  19. Java好学吗,我们怎么才能学好Java
  20. Java实现 LeetCode 457 环形数组循环

热门文章

  1. ThreeJs技术交流(2)——箭头、标语等流动特效
  2. Java中使用递归计算1~N阶乘的值
  3. UE4Android聚光灯投影,Unreal Engine 4 高级灯光实战教学V2
  4. 分享6:绘制二维码/二维条码(java版)
  5. windows 服务器维护经历
  6. oracle ora-14404,删除表空间时,遇到了ORA-14404错误
  7. 联想lenovo电脑如何开机进入Bios与Boot menu
  8. DIY 攒机MINI ITX小机箱选购指南
  9. Python爬虫百度首页
  10. 计算机在材料科学与工程学院,教授 - 材料科学与工程学院