BindingSource 组件Word文件下载.docx
- 文档编号:19960871
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:52
- 大小:73.83KB
BindingSource 组件Word文件下载.docx
《BindingSource 组件Word文件下载.docx》由会员分享,可在线阅读,更多相关《BindingSource 组件Word文件下载.docx(52页珍藏版)》请在冰豆网上搜索。
处理因数据绑定而发生的错误和异常
组件正确处理数据绑定操作中发生的错误。
将Windows窗体控件绑定到类型
组件绑定到类型。
将Windows窗体控件绑定到Factory对象
组件绑定到工厂对象或方法。
使用Windows窗体BindingSource自定义项添加
组件创建新的项并将这些项添加到数据源。
使用BindingSourceResetItem方法引发更改通知
组件为不支持更改通知的数据源引发更改通知事件。
使用BindingSource和INotifyPropertyChanged接口引发更改通知
演示如何将从
INotifyPropertyChanged
继承的类型与
控件一起使用。
使用BindingSource在Windows窗体控件中反映数据源更新
组件响应数据源中的更改。
使用BindingSource组件跨窗体共享绑定数据
将多个窗体绑定到同一数据源。
Topic
Location
使用设计器将Windows窗体控件与BindingSource组件进行绑定
Windows窗体控件
使用Windows窗体BindingSource组件创建查找表
使用设计器将Windows窗体控件绑定到类型
dv_mclictl
将控件添加到窗体并确定应用程序的用户界面后,可以将控件绑定到数据源,这样用户就可以在运行时改变和保存与应用程序相关的数据。
将
控件用作窗体上的控件和数据源之间的桥梁,能够最轻松地完成Windows窗体中一个控件或一系列控件的绑定。
可以将窗体上的一个或多个控件绑定到数据;
在下面的过程中,将一个
TextBox
控件绑定到一个数据源。
为了完成此过程,假定将绑定到派生自数据库的数据源。
有关从其他数据存储区创建数据源的更多信息,请参见
数据源概述。
说明
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。
若要更改设置,请在“工具”菜单上选择“导入和导出设置”。
有关更多信息,请参见
VisualStudio设置。
在设计时绑定控件
1.将
控件拖到窗体上。
2.在“属性”窗口中:
a.展开“(DataBindings)”节点。
b.单击
Text
属性旁边的箭头。
此时将打开“DataSource”UI类型编辑器。
如果以前已经为项目或窗体配置了数据源,将显示此数据源。
3.单击“添加项目数据源”以连接到数据并创建一个数据源。
4.在“数据源配置向导”欢迎页上单击“下一步”。
5.在“选择数据源类型”页上选择“数据库”。
6.在“选择您的数据连接”页上,从可用连接列表中选择一个数据连接。
如果所需的数据连接不可用,请选择“新建连接”以创建新的数据连接。
7.选择“是,保存连接”,以保存应用程序配置文件中的连接字符串。
8.选择要放置到应用程序中的数据库对象。
在此例中,在表中选择一个希望显示
的字段。
9.如果愿意,可以替换默认的数据集名称。
10.单击“完成”。
11.在“属性”窗口中,再次单击
属性旁的箭头。
在“DataSource”UI类型编辑器中,选择要将
绑定到的字段的名称。
“DataSource”UI类型编辑器关闭,并且特定于该数据连接的数据集、BindingSource
和表适配器将添加到窗体中。
将Windows窗体控件绑定到数据源,而数据源返回
值时,不经过处理、格式化或分析事件就可以替代相应值。
格式化或分析数据源值时,NullValue
属性将
转换为指定对象。
示例
下面的示例演示如何在两种不同情况下绑定
第一种情况演示如何设置字符串属性的
NullValue;
第二种情况演示如何设置图像属性的
NullValue。
C#
VB
ImportsSystem
ImportsSystem.Collections.Generic
ImportsSystem.ComponentModel
ImportsSystem.Data
ImportsSystem.Drawing
ImportsSystem.Text
ImportsSystem.Data.SqlClient
ImportsSystem.Windows.Forms
PublicClassForm1
InheritsForm
PublicSubNew()
EndSub
'
Thecontrolsandcomponentsweneedfortheform.
PrivateWithEventsbutton1AsButton
PrivatepictureBox1AsPictureBox
PrivatebindingSource1AsBindingSource
PrivatetextBox1AsTextBox
PrivatetextBox2AsTextBox
Datatabletoholdthedatabasedata.
PrivateemployeeTableAsNewDataTable()
PrivateSubForm1_Load(ByValsenderAsObject,ByValeAsEventArgs)_
HandlesMe.Load
Basicformsetup.
Me.pictureBox1=NewPictureBox()
Me.bindingSource1=NewBindingSource()
Me.textBox1=NewTextBox()
Me.textBox2=NewTextBox()
Me.button1=NewButton()
Me.pictureBox1.Location=NewSystem.Drawing.Point(20,20)
Me.pictureBox1.Size=NewSystem.Drawing.Size(174,179)
Me.textBox1.Location=NewSystem.Drawing.Point(25,215)
Me.textBox1.ReadOnly=True
Me.textBox2.Location=NewSystem.Drawing.Point(25,241)
Me.textBox2.ReadOnly=True
Me.button1.Location=NewSystem.Drawing.Point(200,103)
Me.button1.Text="
MoveNext"
Me.ClientSize=NewSystem.Drawing.Size(292,273)
Me.Controls.Add(Me.button1)
Me.Controls.Add(Me.textBox2)
Me.Controls.Add(Me.textBox1)
Me.Controls.Add(Me.pictureBox1)
Me.ResumeLayout(False)
Me.PerformLayout()
Createtheconnectionstringandpopulatethedatatable
withdata.
DimconnectionStringAsString="
IntegratedSecurity=SSPI;
"
&
_
"
PersistSecurityInfo=False;
InitialCatalog=Northwind;
DataSource=localhost"
DimconnectionAsNewSqlConnection()
connection.ConnectionString=connectionString
DimemployeeAdapterAsNewSqlDataAdapter_
(NewSqlCommand("
Select*fromEmployees"
connection))
connection.Open()
employeeAdapter.Fill(employeeTable)
SettheDataSourcepropertyoftheBindingSourcetotheemployeetable.
bindingSource1.DataSource=employeeTable
SetupthebindingtotheReportsTocolumn.
DimreportsToBindingAsBinding=_
textBox2.DataBindings.Add("
Text"
bindingSource1,"
ReportsTo"
_
True)
SettheNullValuepropertyforthisbinding.
reportsToBinding.NullValue="
NoManager"
SetupthebindingforthePictureBoxusingtheAddmethod,setting
thenullvalueinmethodcall.
pictureBox1.DataBindings.Add("
Image"
Photo"
True,DataSourceUpdateMode.Never,_
NewBitmap(GetType(Button),"
Button.bmp"
))
Setuptheremainingbinding.
textBox1.DataBindings.Add("
LastName"
True)
Movethroughthedatawhenthebuttonisclicked.
PrivateSubbutton1_Click(ByValsenderAsObject,_
ByValeAsEventArgs)Handlesbutton1.Click
bindingSource1.MoveNext()
<
STAThread()>
SharedSubMain()
Application.EnableVisualStyles()
Application.Run(NewForm1())
EndClass
绑定的属性和
NullValue
属性的类型必须相同,否则将发生错误,而且不会再处理
在这种情况下,不会引发异常。
查找表是一种数据表,其中有一列显示另一个相关表的记录数据。
在下面的过程中,使用了一个
ComboBox
控件来显示具有外键关系父、子表的字段。
为了帮助实现这两个表和这种关系的可视化,下面是一个父、子表的示例:
CustomersTable(父表)
CustomerID
CustomerName
712
PaulKoch
713
TamaraJohnston
OrdersTable(子表)
OrderID
OrderDate
903
2004年2月12日
904
2004年2月13日
在这一情形下,表CustomersTable存储了需要显示和保存的实际信息。
但为了节省空间,此表省略了大部分数据。
另一张表OrdersTable只包含有关哪个客户ID号等同于哪个订单日期和订单ID的表面相关信息,
并没有提及客户的名称。
在
ComboBox控件(Windows窗体)
控件上设置了4种重要属性来创建查找表。
∙DataSource
属性包含查找表的名称。
∙DisplayMember
属性包含查找表中要作为控件文本(客户名称)显示的数据列。
∙ValueMember
属性包含查找表中具有存储信息(父表中的ID号)的数据列。
∙SelectedValue
属性根据
ValueMember
为子表提供查找值。
下面的过程演示了如何将窗体布局成为一个查找表,并将数据绑定到它上面的控件。
为了成功完成这个过程,必须像上面提到的一样有一个带有存在外键关系的父表和子表的数据源。
创建用户界面
1.从“工具箱”中将一个
控件中拖动到窗体上。
此控件将显示父表的列。
2.拖动其他的控件来显示子表的详细信息。
表中数据的格式决定了应当选择哪一种控件。
根据功能列出的Windows窗体控件。
3.将一个
BindingNavigator
控件拖到窗体上,这将允许您定位子表中的数据。
连接数据并将其绑定到控件
1.选择
并单击“智能任务”标志符号以显示“智能任务”对话框。
2.选择“使用数据绑定项”。
3.单击“数据源”下拉框旁边的箭头。
如果以前已经为项目或窗体配置了数据源,将显示该数据源;
否则,完成下面的步骤(此示例使用Northwind示例数据库中的Customers表和Orders表,并在括号中引用它们)。
a.单击“添加项目数据源”以连接到数据并创建一个数据源。
b.在“数据源配置向导”欢迎页上单击“下一步”。
c.在“选择数据源类型”页面上选择“数据库”。
d.从“选择数据连接”页上的可用连接列表中选择一个数据连接。
如果希望的数据连接不可用,则选择“新连接”以创建一个新的数据连接。
有关更多信息,请参见“添加/修改连接”对话框(通用)。
e.单击“是,保存连接”将连接字符串保存到应用程序配置文件中。
f.选择要放置到应用程序中的数据库对象。
在这种情况下,选择具有外键关系的一个父表和一个子表(例如Customers和Orders)。
g.如果愿意,可以替换默认的数据集名称。
h.单击“完成”。
4.在“显示成员”下拉框中,选择将在组合框中显示的列名(例如,ContactName)。
5.在“值成员”下拉框中,选择在子表中进行查找操作的列(例如,CustomerID)。
6.在“选定值”下拉框中,定位到“项目数据源”和刚创建的包含父表和子表的数据集。
选择与父表的值成员相同的子表属性(例如,Orders.CustomerID)。
将创建适当的
BindingSource、数据集和表适配器组件,并添加到窗体中。
7.将
控件绑定到子表的
BindingSource(例如,OrdersBindingSource)。
8.从想要显示的子表的
BindingSource(例如,OrdersBindingSource)中,将除了
和
外的控件绑定到详细信息字段上。
您可以通过
Sort
Filter
属性公开
控件的排序和筛选功能。
当基础数据源为
IBindingList
时可以应用简单排序,当数据源为
IBindingListView
时可以应用筛选和高级排序。
属性需要标准ADO.NET语法:
在表示数据源中数据列名的字符串之后加上
ASC
或
DESC,以指示该列表应按升序排序,还是应按降序排序。
通过用逗号分隔符隔开每一列,可以设置高级排序或多列排序。
属性获取字符串表达式。
将敏感信息(如密码)存储在连接字符串中可能会影响您的应用程序的安全性。
若要控制对数据库的访问,一种较为安全的方法是使用Windows身份验证(也称为集成安全性)。
有关更多信息,请参见保护连接信息。
使用BindingSource筛选数据
∙将
属性设置为所需的表达式。
在下面的代码示例中,表达式就是在列名之后加上该列所需的值。
BindingSource1.Filter="
ContactTitle='
Owner'
使用BindingSource进行数据排序
属性设置为后面要跟有
DESC
的所需列名称,以指示是按升序还是降序排序。
2.用逗号分隔多个列。
BindingSource1.Sort="
CountryDESC,AddressASC"
下面的代码示例将Northwind示例数据库的Customers表中的数据加载到
DataGridView
控件中,然后对显示的数据进行筛选和排序。
PrivateSubInitializeSortedFilteredBindingSource()
Createtheconnectionstring,dataadapteranddatatable.
DimconnectionStringAsNewSqlConnection("
DataSource=localhost;
)
DimcustomersTableAdapterAsNewSqlDataAdapter("
Select*fromCustomers"
connectionString)
DimcustomerTableAsNewDataTable()
Fillthetheadapterwiththecontentsofthecustomertable.
customersTableAdapter.Fill(customerTable)
SetdatasourceforBindingSource1.
BindingSource1.DataSource=customerTable
Filtertheitemstoshowcontactswhoareowners.
BindingSource1.Filter="
Sorttheitemsonthecompanynameindescendingorder.
BindingSource1.Sort="
CountryDESC,AddressASC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BindingSource 组件
![提示](https://static.bdocx.com/images/bang_tan.gif)