BindingNavigator操作DatagridView的数据[通俗易懂]

BindingNavigator操作DatagridView的数据[通俗易懂]参考http://wenku.baidu.com/link?url=NWfEfArPZvDO_aI-xEKBHVGoZY9wQO_Oty_GCsGLiPspheCzFYLf_dytuWAqN2_0AvLpK-iAun55qe7HPKjfRJ1vI8N4EHADeyQ1hNnQrdW 1、往窗体拉一个BindingNavigator:如图绿色框,就是一个数据导航栏  再拉一个DataGrid…

大家好,又见面了,我是你们的朋友全栈君。

参考

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

 

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

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

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

BindingNavigator操作DatagridView的数据[通俗易懂]

 

数据库数据如下:

BindingNavigator操作DatagridView的数据[通俗易懂]

代码如下:

 

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操作DatagridView的数据[通俗易懂]

 

分页的实现:

重新编辑BindingNavigator

BindingNavigator操作DatagridView的数据[通俗易懂]

 在上面代码的基础上,

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; // } } } }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158281.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • FragmentPagerAdapter刷新notifyDataSetChanged无效

    FragmentPagerAdapter刷新notifyDataSetChanged无效网络上会提到pageadapter的刷新方案如下代码: 复写pageradapter的getItemPosition方法设置tag为POSITION_NONE意思是没有找到child要求重新加载。@Override publicintgetItemPosition(Objectobject){   returnPOSITION_NONE; } 结果

  • @JsonIgnore作用「建议收藏」

    @jsonignore的作用作用是json序列化时将javabean中的一些属性忽略掉,序列化和反序列化都受影响。如下:packagecom.hzboy.orm;importjava.util.List;importjavax.persistence.CascadeType;importjavax.persistence.Column;importj

  • vue中的双向数据绑定原理_vue nodejs

    vue中的双向数据绑定原理_vue nodejs简述    每当面试官问到Vue数据双向绑定原理的时候,我们都会简单的说:Vue内部通过Object.defineProperty方法属性拦截的方式,把data对象里每个数据的读写转化成getter/setter,当数据变化时通知视图更新。虽然一句话把大概原理概括了,但是其内部的实现方式还是值得深究的,本文就以通俗易懂的方式剖析Vue内部双向数据绑定原理的实现过程思路   …

  • os模块的简单使用

    os模块的简单使用

  • 免费已备案二级域名_二级免备案域名

    免费已备案二级域名_二级免备案域名今天给大家推荐一个免备案的免费二级域名注册平台。DYUNS域名网-永久免费域名_免备案域名只需要一个邮箱,就能注册到自己的二级域名,非常方便。提供”icu.ltd”等超短域名注册服务,非常有利于用户访问与记忆。平台还提供了免费的CDN+防御+免备案服务,这是其他平台都没有的,也是我选择它的理由之一。管理也非常方便,后台一键就能完成自助删改解析等操作。官方客服的服务也是十分的到位,体验很好。大家也可以自行注册体验哦!…

  • 【期末复习】微机原理与接口技术

    【期末复习】微机原理与接口技术知识重点整理第一章输入/输出系统1.接口电路的作用和基本功能接口电路是CPU与外设交换信息的中转站。接口电路应具备的功能为:数据缓冲功能、联络功能、寻址功能、数据转换功能、中断管理功能。2.端口的概念和分类端口是接口电路中能与CPU直接进行信息交换的寄存器,即I/O端口寄存器。在接口电路中,按端口寄存器存放信息的物理意义可划分为数据端口、控制端口和状态端口:数据端…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号