参考

http://wenku.baidu.com/link?url=NWfEfArPZvDO_aI-xEKBHVGoZY9wQO_Oty_GCsGLiPspheCzFYLf_dytuWAqN2_0AvLpK-iAun55qe7HPKjfRJ1vI8N4EHADeyQ1hNnQrdW

1、往窗体拉一个BindingNavigator:如图绿色框,就是一个数据导航栏

  再拉一个DataGridView,显示数据,我添加了三列,对应要显示的三列数据

  再拉一个BindingSource,作为上面两个的媒人

数据库数据如下:

代码如下:

namespace gjjyOffline
{
public partial class fenye : Form
{
public fenye()
{
InitializeComponent();
} private void fenye_Load(object sender, EventArgs e)
{
//加载显示数据
using (SQLiteConnection con = new SQLiteConnection("Data Source这一串"))
{
con.Open();
using (SQLiteCommand cmd = new SQLiteCommand())
{
cmd.Connection = con;
cmd.CommandText = string.Format(@"select * from jy_dic_crop");//要显示的数据
int rows = cmd.ExecuteNonQuery();
SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds);
//con.Close();
DataTable dtbl = ds.Tables[];
dataGridView1.AutoGenerateColumns = false;
this.dataGridView1.DataSource = dtbl;
            //绑定每列的值显示在DatagridView
this.dataGridView1.Columns["column1"].DataPropertyName = dtbl.Columns["id"].ToString();//column1是DatagridView的第一列的name值
this.dataGridView1.Columns["column2"].DataPropertyName = dtbl.Columns["name"].ToString();
this.dataGridView1.Columns["column3"].DataPropertyName = dtbl.Columns["status"].ToString();
            //将DatagridView的数据通过BindingSource与BindingNavigator连接起来
BindingSource bs = new BindingSource();
bs.DataSource = dtbl;
bindingNavigator1.BindingSource = bs;
dataGridView1.DataSource = bs; }
}
}
}
}

效果如下:

DatagridView的数据与BindingNavigator导航栏联系起来了

分页的实现:

重新编辑BindingNavigator

在上面代码的基础上,

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SQLite; namespace gjjyOffline
{
public partial class fenye : Form
{
public fenye()
{
InitializeComponent();
} int pageSize = ;//页面行数
int total = ;
int pageCount = ;//总页数 int pageCurrent = ;
int currentRow = ;//当前记录数从0开始 int nStartPos = ;
int nEndPos = ; DataTable dtbl = null; private void LoadData()
{
nStartPos = ;
nEndPos = ;
DataTable dtTemp = dtbl.Clone();
if (pageCurrent == pageCount)
{
nEndPos = total;
}
else
{
nEndPos = pageSize * pageCurrent;
}
nStartPos = currentRow; toolStripLabel2.Text = "/" + pageCount.ToString();
if (dtbl.Rows.Count == )
{
toolStripTextBox1.Text = "";
}
else
{
toolStripTextBox1.Text = Convert.ToString(pageCurrent);
}
this.label2.Text = total.ToString();
//从元数据源复制记录行
if (dtbl.Rows.Count != )
{
for (int i = nStartPos; i < nEndPos; i++)
{
dtTemp.ImportRow(dtbl.Rows[i]);
currentRow++;
} }
bindingSource1.DataSource = dtTemp;
bindingNavigator1.BindingSource = bindingSource1;
dataGridView1.DataSource = bindingSource1; } private void fenye_Load(object sender, EventArgs e)
{
//加载显示数据
using (SQLiteConnection con = new SQLiteConnection("Data Source这一串"))
{
con.Open();
using (SQLiteCommand cmd = new SQLiteCommand())
{
cmd.Connection = con;
cmd.CommandText = string.Format(@"select * from jy_dic_crop");
int rows = cmd.ExecuteNonQuery();
SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds);
//con.Close();
dtbl = ds.Tables[];
dataGridView1.AutoGenerateColumns = false;
this.dataGridView1.DataSource = dtbl; this.dataGridView1.Columns["column1"].DataPropertyName = dtbl.Columns["id"].ToString();
this.dataGridView1.Columns["column2"].DataPropertyName = dtbl.Columns["name"].ToString();
this.dataGridView1.Columns["column3"].DataPropertyName = dtbl.Columns["status"].ToString(); BindingSource bs = new BindingSource();
bs.DataSource = dtbl;
bindingNavigator1.BindingSource = bs;
dataGridView1.DataSource = bs; pageSize = ;
total = dtbl.Rows.Count;
pageCount=(total/pageSize);
if((total%pageSize>))
{
pageCount++;
}
pageCurrent = ;
currentRow = ;//当前记录数从0开始 LoadData();
}
}
} private void bindingNavigator1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
if(e.ClickedItem.Text=="上一页")
{
if(pageCurrent>=)
{
pageCurrent--;
}
if (pageCurrent <= )
{
pageCurrent++;
MessageBox.Show("已经是第一页");
return;
}
else
{
currentRow=pageSize*(pageCurrent-);
}
//
LoadData();
// } if(e.ClickedItem.Text=="下一页")
{
if(pageCurrent<=pageCount)
{
pageCurrent++;
}
if (pageCurrent > pageCount)
{
pageCurrent--;
MessageBox.Show("已经是最后一页");
return;
}
else
{
currentRow=pageSize*(pageCurrent-);
}
//
nStartPos = ;
nEndPos = ;
DataTable dtTemp = dtbl.Clone();
if (pageCurrent == pageCount)
{
nEndPos = total;
}
else
{
nEndPos = pageSize * pageCurrent;
}
nStartPos = currentRow; toolStripLabel2.Text = "/" + pageCount.ToString();
if (dtbl.Rows.Count == )
{
toolStripTextBox1.Text = "";
}
else
{
toolStripTextBox1.Text = Convert.ToString(pageCurrent);
}
this.label2.Text = total.ToString();
//从元数据源复制记录行
if (dtbl.Rows.Count != )
{
for (int i = nStartPos; i < nEndPos; i++)
{
dtTemp.ImportRow(dtbl.Rows[i]);
currentRow++;
}
}
bindingSource1.DataSource = dtTemp;
bindingNavigator1.BindingSource = bindingSource1;
dataGridView1.DataSource = bindingSource1;
//
}
}
}
}

BindingNavigator操作DatagridView的数据的更多相关文章

  1. 将listBox中信息显示在dataGridview中,操作datagridview后删除listBox信息和SQL数据库信息 续(浅谈listBox..)

    应用场景      对datagridview控件使用了解,以及操作datagridview选中的信息删除,并且有二次确认后才删除用户信息.相应的删除listbox中用户信息,下面一起看看需要哪些准备 ...

  2. C# 数据库dataGridView刷新数据和主外键判断

    本文主要讲诉在使用VS2012+SQL Server数据库做系统中,通常会遇到几个问题.使用dataGridView控件在修改.删除.插入数据后,怎样刷新数据显示操作后的结果.同时在对数据操作时通常会 ...

  3. DataGridView显示数据的两种方法

    1.简介 DataGridView空间是我们经常使用的显示数据的控件,它有极高的可配置性和可扩展性. 2.显示数据 DataGridView显示数据一般我们经常使用的有两种方法,一种是直接设置Data ...

  4. 初识DataGridView 表格数据控件

    DataGridView控件提供了一种强大而灵活的以表格形式显示数据的方式,用户可以使用DataGridView控件来显示少量数据的只读视图,也可以对其进行缩放以显示特大数据集的可编辑视图. 扩展Da ...

  5. 【开源】OSharp3.0框架解说系列(6.2):操作日志与数据日志

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  6. JAVASE02-Unit07: 基本IO操作 、 文本数据IO操作

    基本IO操作 . 文本数据IO操作 java标准IO(input/output)操作 package day07; import java.io.FileOutputStream; import ja ...

  7. osharp3 操作日志之数据日志 控制增强

    osharp3 原来的数据日志,有配置文件中有这总开关,DataLoggingEnabled,原来的程序是,这个总开关关了,就无法记录数据日志了,,如果开了,,他不管记录不记录数据日志,系统都会存数据 ...

  8. Jqgrid入门-操作表格的数据(二)

    上一篇中,Jqgrid已经可以从服务端获得数据,并显示在Grid表格中了.下面说一下,如何操作表格及其数据.           jqGrid有很多方法函数,用来操作数据或者操作Grid表格本身.jq ...

  9. 关闭“编辑窗体”后, 主窗体的DatagridView刷新数据的问题

    问题:在关闭一个窗体2后,要刷新窗体1内的datagridview的数据,直接窗体1.datagridview.datasource=dt 是没用的. 解决办法如下: 在主窗体里 创建编辑窗体时 加上 ...

随机推荐

  1. 动态替换fragment

    // [1]获取手机的宽和高 windommanager WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); in ...

  2. POJ 2484 A Funny Game(神题!)

    一开始看这道博弈题的时候我就用很常规的思路去分析了,首先先手取1或者2个coin后都会使剩下的coin变成线性排列的长条,然后无论双方如何操作都是把该线条分解为若干个子线条而已,即分解为若干个子游戏而 ...

  3. C++—函数探幽

    一.内联函数 1.内联函数的机制 内联函数是C++为提高程序运行速度而做的一项改进. 函数调用机制:常规函数调用使程序使程序跳到被掉函数的地址,并在函数结束时返回. 内联函数的机制:内联函数的代码与其 ...

  4. Css_加载样式

    第一种效果: 代码如下: <div class="loading"> <span></span> <span></span&g ...

  5. SAP标准价格修改

    标准MR21修改前期的价格,不会影响到当期. 相关配置 事务码OMRN. 如企业账期已经开到 2015 年 2 月,会计账期还可对 1月记账,配置后可修改1月物料价格.

  6. 009-Selenium2环境搭建

    1.Java开发环境的搭建      本课程中将使用Java语言编写Selenium自动化测试脚本,在Eclipse集成开发环境中运行. (1)jdk的安装 a.下载 官网下载,http://www. ...

  7. 为MySQL选择合适的备份方式

    数据库的备份是极其重要的事情.如果没有备份,遇到下列情况就会抓狂: UPDATE or DELETE whitout where… table was DROPPed accidentally… IN ...

  8. 关于WorkFlow的使用以及例子

    近期做项目,项目需要用到工作流方面的技术,我在这里与大家分享一个workFlow学习的地址,共大家学习. http://www.cnblogs.com/foundation/ 各文档的说明: F资料├ ...

  9. JS获取页面元素并修改

    //实现代码如下,非常简单<script> (function(){ var ele = document.getElementsByTagName("ul"); // ...

  10. BliBli抢楼全攻略

    B站抢楼是一个很好玩的事情,每当新番出新集时.总有很多人想能够在前排发表评论,但是因为人数众多,往往不能如愿,今天就教大家一个抢楼的好办法. 我们平时抢楼的整个流程是这样的: 1.在官方放出的新番更新 ...