BindingNavigator操作DatagridView的数据[通俗易懂]
数据 操作 通俗易懂 DataGridView BindingNavigator
2023-06-13 09:12:33 时间
大家好,又见面了,我是你们的朋友全栈君。
参考
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[0];
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 = 0;//页面行数
int total = 0;
int pageCount = 0;//总页数
int pageCurrent = 0;
int currentRow = 0;//当前记录数从0开始
int nStartPos = 0;
int nEndPos = 0;
DataTable dtbl = null;
private void LoadData()
{
nStartPos = 0;
nEndPos = 0;
DataTable dtTemp = dtbl.Clone();
if (pageCurrent == pageCount)
{
nEndPos = total;
}
else
{
nEndPos = pageSize * pageCurrent;
}
nStartPos = currentRow;
toolStripLabel2.Text = "/" + pageCount.ToString();
if (dtbl.Rows.Count == 0)
{
toolStripTextBox1.Text = "0";
}
else
{
toolStripTextBox1.Text = Convert.ToString(pageCurrent);
}
this.label2.Text = total.ToString();
//从元数据源复制记录行
if (dtbl.Rows.Count != 0)
{
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[0];
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 = 10;
total = dtbl.Rows.Count;
pageCount=(total/pageSize);
if((total%pageSize>0))
{
pageCount++;
}
pageCurrent = 1;
currentRow = 0;//当前记录数从0开始
LoadData();
}
}
}
private void bindingNavigator1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
if(e.ClickedItem.Text=="上一页")
{
if(pageCurrent>=0)
{
pageCurrent--;
}
if (pageCurrent <= 0)
{
pageCurrent++;
MessageBox.Show("已经是第一页");
return;
}
else
{
currentRow=pageSize*(pageCurrent-1);
}
//
LoadData();
//
}
if(e.ClickedItem.Text=="下一页")
{
if(pageCurrent<=pageCount)
{
pageCurrent++;
}
if (pageCurrent > pageCount)
{
pageCurrent--;
MessageBox.Show("已经是最后一页");
return;
}
else
{
currentRow=pageSize*(pageCurrent-1);
}
//
nStartPos = 0;
nEndPos = 0;
DataTable dtTemp = dtbl.Clone();
if (pageCurrent == pageCount)
{
nEndPos = total;
}
else
{
nEndPos = pageSize * pageCurrent;
}
nStartPos = currentRow;
toolStripLabel2.Text = "/" + pageCount.ToString();
if (dtbl.Rows.Count == 0)
{
toolStripTextBox1.Text = "0";
}
else
{
toolStripTextBox1.Text = Convert.ToString(pageCurrent);
}
this.label2.Text = total.ToString();
//从元数据源复制记录行
if (dtbl.Rows.Count != 0)
{
for (int i = nStartPos; i < nEndPos; i++)
{
dtTemp.ImportRow(dtbl.Rows[i]);
currentRow++;
}
}
bindingSource1.DataSource = dtTemp;
bindingNavigator1.BindingSource = bindingSource1;
dataGridView1.DataSource = bindingSource1;
//
}
}
}
}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158281.html原文链接:https://javaforall.cn
相关文章
- 数据透视表上线!如何在纯前端实现这个强大的数据分析功能?
- 数据可视化分析工具如何在国内弯道超车,迅速崛起?
- 每日一题之Vue数据劫持原理是什么?
- 基因型数据清洗常规操作
- 客快物流大数据项目(七十六):使用Impala对kudu进行DML操作
- 因收集Android 位置数据,Google被罚六千万美元
- 数据库表的创建、管理和数据操作(实验一)
- MySQL学习之数据更新操作详解
- HDFS的Java客户端操作代码(HDFS的查看、创建)详解大数据
- Zookeeper学习之路 (三)shell操作详解大数据
- 数据PHP简单操作实现MySQL数据输出(php输出mysql)
- 据深入探索Linux进程数据的解析(查看linux进程数)
- :MySQL,让数据存储更简单!(mysql夸库)
- Oracle 数据复制:实现表内数据自动复制(oracle复制本表数据)
- 利用Oracle触发器执行数据变更操作(oracle触发器类型)
- MySQL操作二进制数据的实践(mysql二进制数据)
- MySQL中的二进制数据管理(mysql二进制数据)
- Redis简易操作:如何删除数据(redis删除数据)
- MySQL数据导出:分隔符设置(mysql导出分隔符)
- MySQL 事务:实现安全的数据操作(mysql事务)
- 使用VC编程操作MySQL数据库实现数据存储和查询(vcmysql编程)
- redis mget 操作:一次获取多个数据(mgetredis)
- Redis序列化操作实现快速数据获取(redis返回序列化)
- 库使用Oracle RAC数据库实现高效高可用性(oracle rac数据)
- 验证用户是否修改过页面的数据的实现方法
- php操作XML、读取数据和写入数据的实现代码