参考

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. gcc常用指令及相关知识

    1,gcc与g++的问题: 1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序:后缀为.cpp的,两者都会认为是c++程序. 2.编译阶段,g++会调用gcc,对于c++代码,两者是等 ...

  2. golang代码执行顺序

    一:首先man.go,整个程序的入口 func main() { beego.Run() } 然后beego.run()代码 // Run beego application. // beego.Ru ...

  3. Perl 语法 - 基础

    perl语言的核心是正则表达式,在文本处理上非常有优势,与python类似,但语法不同,perl的语法很灵活,用多了才会觉得好用. 常用知识点总结: perl语法类似于C语言(perl源于Unix), ...

  4. java 集合(set)

    Interface ListIterator<E> 特有的方法: hasPrevious() 判断是否存在上一个元素. previous() 当前指针先向上移动一个单位,然后再取出当前指针 ...

  5. IoC 之 2.1 IoC基础(壹)

    2.1.1  IoC是什么 Ioc-Inversion of Control,即"控制反转",不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器 ...

  6. 本地化Model Factory

    即让其生成中文的测试数据 先简单介绍Model Factory两个常用方法: 进入tinker页面生成测试数据: Factory(User::class,10)->make():make()方法 ...

  7. Django开发博客- 页面美化

    css是一种用来描述某种标记语言写的web站点的样式语言.这里我们并不想展开讨论,关于CSS我在这里推荐一个很不错的资源: Codeacademy HTML & CSS course 不想从头 ...

  8. [Tomcat] Tomcat远程调试

    如何用eclispe远程调试tomcat 关键步骤: 1)修改启动脚本startup.bat 复制startup.bat为startup-debug.bat,然后打开startup-debug.bat ...

  9. sina 行情api

    http://blog.csdn.net/simon803/article/details/7784682

  10. javaSE之如何将一个文档显示出来(,txt,.doc,.....)

    package DEMO ; import java.io.File; import java.io.FileInputStream; import java.io.IOException; impo ...