bindingnavigator如何与datagridview绑定

bindingnavigator如何与datagridview绑定2019独角兽企业重金招聘Python工程师标准>>>…

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

 1: BindingSource bs = new BindingSource();
 2: bs.DataSource = dateTabel1;
 3: bindingNavigator1.BindingSource = bs;
 4: dataGridView1.DataSource = bs ;

BindingNavigator 控件一般要与BindingSource 控件一同使用较为方便,因为对于 BindingNavigator 控件上的每个按钮,都有一个对应的 BindingSource组件成员,其以编程方式允许有相同功能。例如,MoveFirstItem 按钮对应于 BindingSource 组件的 MoveFirst 方法,DeleteItem 按钮对应于RemoveCurrent方法,等等。尽管 BindingNavigator 可以绑定到任何数据源,但它被设计为通过其BindingNavigator.BindingSource 属性与BindingSource 组件集成。

因此定义一个BindingSource ,并将BindingNavigator 和DataGridView的数据源都设置为BindingSource ,可保证BindingNavigator 和DataGridView的数据同步。

 

 

———————————————————————————————————————-

BindingSource控件介绍 
BindingSource控件是.NET Framework 2.0提供的新控件之一。BindingSource控件与数据源建立连接,然后将窗体中的控件与BindingSource控件建立绑定关系来实现数据绑定,简化数据绑定的过程。 
BindingSource控件即是一个连接后台数据库的渠道,同时又是一个数据源,因为BindingSource控件即 支持向后台数据库发送命令来检索数据,又支持直接通过BindingSource控件对数据进行访问、排序、筛选和更新操作。BindingSource控件能够自动管理许多绑定问题。 
BindingSource控件没有运行时界面,无法在用户界面上看到该控件。 
BindingSource控件通过Current属性访问当前记录,通过List属性访问整个数据表。 

下表列出了BindingSource控件的主要属性
属性 说明 
AllowEdit 指示是否可以编辑BindingSource控件中的记录。 
AllowNew  指示是否可以使用 AddNew 方法向BindingSource控件添加记录 
AllowRemove  指示是否可从BindingSource控件中删除记录。 
Count  获取BindingSource控件中的记录数。 
CurrencyManager 获取与BindingSource控件关联的当前记录管理器。 
Current   获取BindingSource控件中的当前记录 
DataMember   获取或设置连接器当前绑定到的数据源中的特定数据列表或数据库表。 
DataSource  获取或设置连接器绑定到的数据源。 
Filter 获取或设置用于筛选的表达式。 
Item  获取或设置指定索引的记录。 
Sort 获取或设置用于排序的列名来指定排序。 
通过Current属性及RemoveCurrent、EndEdit、CancelEdit、Add和AddNew方法可实现对当前记录的编辑操作。

下表列出了BindingSource控件的主要方法 
方法 说明 
Add  将现有项添加到内部列表中 
CancelEdit  从列表中移除所有元素 
EndEdit   将挂起的更改应用于基础数据源。 
Find    在数据源中查找指定的项。 
MoveFirst   移至列表中的第一项。 
MoveLast   移至列表中的最后一项。 
MoveNext   移至列表中的下一项。 
MovePrevious   移至列表中的上一项。 
RemoveCurrent  从列表中移除当前项。

如果你是通过从[数据源]拖拽表到Form上生成的DataGridView及数据,那就用VS05自动生成的 BindingNavigator进行增、删、改。通常你甚至连一行代码都不用写。 另外,从vs05开始强烈推荐使用BindingSource作为控件和数据之间的中间层。就是说控件绑定到 BindingSource, BindingSource再绑定到数据对象(date item)或对象列表 (data item list)。 这样做有 许多好处。 BindingSource.EndEdit();会把更新提交到内存中的对象或对象列表(如DataSet)。 BindingSource.Update方法会把更新提交到数据库。   
以Vs2005操作Access2003数据库为例(不用向导) 
建一个Access   2003文件 db1.mdb   建一个表(Person) :表结构如下,输入一些内容   
UID  自动编号 主键 
name 文字   
age 数字   
sex 文字   
Vs2005建一个winform,把一个DataGridView、Button拖到Form上。 运行一下,再把db1.mdb复制到Debug目录下。 给类增加三个成员: 
private DataTable dt; 
private BindingSource bs; 
private OleDbDataAdapter da; 
双击Form1,在Form1_Load里 : 
private void Form1_Load(object sender, EventArgs e) 
       { 
           TODO: 这行代码将数据加载到表“db1DataSet.stu”中。您可以根据需要移动或移除它。 
           //this.stuTableAdapter.Fill(this.db1DataSet.stu); 
           OleDbConnection conn = new OleDbConnection(); 
           conn.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb”; 
           OleDbCommand cmd = new OleDbCommand(); 
           cmd.Connection = conn; 
           cmd.CommandText = “select * from  Person”; 
           dt = new DataTable(); 
           da = new OleDbDataAdapter(); 
           da.SelectCommand = cmd; 
           OleDbCommandBuilder cb = new OleDbCommandBuilder(da); 
           da.Fill(dt); 
           bs = new BindingSource(); 
           bs.DataSource = dt; 
           dataGridView1.DataSource = bs; 
       } 
双击button1,在button1_Click里   
private   void   button1_Click(object   sender,   EventArgs   e)   
   {                         
                         da.Update(dt);   
                         MessageBox.Show(“OK”);   
   }   
把我举的例子里 
private BindingSource bs;//去掉 
bs = new BindingSource(); 
bs.DataSource = dt; 
dataGridView1.DataSource = bs; //也可以不用BindingSource,直接DataSource=dt; 
这三行改成 
dataGrid1.DataSource = dt; 
——— 
‘永远’记住一点:在使用DataAdapter的应用里,你根本无需手动打开连接和关闭连接。 
也就是在你的代码中根本不应看到Conn.Open()、Conn.Close()之类的东西。 
因为DataAdapter会在自动为你打开和关闭连接。

转载于:https://my.oschina.net/bv10000/blog/99299

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158172.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • eclipse 创建java文件_如何使用eclipse创建一个java文件

    eclipse 创建java文件_如何使用eclipse创建一个java文件1:如何使用eclipse创建一个java文件第一步:创建一个java项目file——>new–>javaproject第二步:创建一个package选中项目右键,选择:new–>package注意:规范。所有单词全部小写,顶级域名倒着写。规则,必须符合标识符的规则。作用:用于管理class类(java源文件),一个包中不能有同名的class。第三步:创建一个class选…

    2022年7月19日
    19
  • 网站被ddos攻击怎么办_服务器遭受攻击

    网站被ddos攻击怎么办_服务器遭受攻击网站遭遇DOS攻击一、事件背景   长假对于IT人员来说是个短暂的休整时期,可IT系统却一时也不能停,越是节假日,越可能出大问题,下面要讲述的就是一起遭受DOS攻击的案例。   春节长假刚过完,小李公司的Web服务器就出了故障。下午1点,吃完饭回来,小李习惯性的检查了Web服务器。Web服务器的流量监控系统显示下行的红色曲线,与此同时收到了邮件报警,可以判断服务器出现了状况

    2022年10月1日
    5
  • 决策引擎上线啦「建议收藏」

    决策引擎上线啦「建议收藏」决策服务基本都涵盖了信用和市场的整个生命周期管理,从客户获取、申请审批、客户管理、催收和欺诈管理等业务应用等等方面。基于这样的需求,决策引擎在此时便孕育而生。目前在风控系统上,决策引擎更是都是非常成熟稳定的模块。

    2022年6月18日
    32
  • 养好身体,来年再战

    养好身体,来年再战

    2021年10月3日
    41
  • c语言位运算取反_c语言取反程序

    c语言位运算取反_c语言取反程序先说结论假设x为signedint,也就是说它的补码表示中第一位表示符号(1:负;0:正),那么~x=-(x+1)证明计算机内部使用补码表示,则问题相当于求证:当x为signedint时,(~x)补=[-(x+1)]补(0)证明:因为补码有个规律:(x+y)补=(x)补+(y)补,所以:[-(x+1)]补=[(-x)+(-1)]补=(-x)补+(-1)补要证(~x)补=[-(x+1)…

    2022年8月14日
    5
  • LuaJIT_lunatie deuil

    LuaJIT_lunatie deuil1.FFI教程原文:FFITutorial相关链接:OpenResty最佳实践之FFI加载FFI库FFI库时默认编译进LuaJIT中的,但是不会默认加载或初始化。因此,当需要使用FFI库时,需要在Lua文件的开头添加如下语句:localffi=require(“ffi”)访问标准系统函数如下示例显示了如何访问标准系统函数。localffi=…

    2022年9月27日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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