参考

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. Java JDBC连接数据库 Access连接数据库

    1.加载JDBC驱动程序:  在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),再通过java.lang.Class类的静态方法forName(String  classN ...

  2. VideoView

    [1]这个控件就是对surfaceview 和 meidiaplayer进行封装 [2]meidiaplayer 播放视频他只支持 3gp MP4格式    

  3. Hadoop与Spark比较

    先看这篇文章:http://www.huochai.mobi/p/d/3967708/?share_tid=86bc0ba46c64&fmid=0 直接比较Hadoop和Spark有难度,因为 ...

  4. D3.js 理解 Update、Enter、Exit

    Update.Enter.Exit 是 D3 中三个非常重要的概念,它处理的是当选择集和数据的数量关系不确定的情况. 一.什么是 Update.Enter.Exit svg.selectAll(&qu ...

  5. Android布局_网格布局GirdLayout

    自Android4.0版本后新增的GirdLayout网格布局(API 14) <?xml version="1.0" encoding="utf-8"? ...

  6. Freemarker 浅析 (zhuan)

    http://blog.csdn.net/marksinoberg/article/details/52006311 ***************************************** ...

  7. 常用的 文件 MIME类型

    估计很多朋友对不同后缀的文件对应的MIME类型不熟悉(实际上这么多我也记不住), 所以将平常常见的一些文件后缀对应的MIME类型写了一个对照表,现在奉献给大家: .asx,video/x-ms-asf ...

  8. fedora 关闭、禁止selinux

    Fedora关闭/禁用SELinux三种方法 在Fedora中有时候我们想关闭SELinux,因为有时候本是合法的操作也总是弹出窗口阻止我们的操作.下面介绍三种方法来关闭/禁用SELinux. 1.在 ...

  9. hdu_2089 不要62

    数位动态规划     数位动态规划是求解一个大区间[L, R]中间满足条件Q的所有数字的个数(或者和,或其他)的一种方法.它通过分析每一位上的数字,一般用 dp[len][digit][...] 来表 ...

  10. phalcon: 查找记录(Finding Records)可用的查询设置如下:

    可用的查询设置如下: 参数 描述 举例 conditions Search conditions for the find operation. Is used to extract only tho ...