设为首页收藏本站language 语言切换
查看: 2349|回复: 0
收起左侧

探讨VB.Net中的数据绑定

[复制链接]
发表于 2010-2-25 10:20:23 | 显示全部楼层 |阅读模式
<p >VB.Net是没有自己的类库的,他依托的类库是.Net FrameWork SDK中的类库,虽然在.Net FrameWrok SDK中并没有提供在Visual Basic中的的DbLabel、DbCombox等如此的数据库组件,但.Net FrameWork SDK中提供了一种数据绑定技术,可以把打开的数据表中的某个或者某些字段绑定到在命名空间System.Window.Forms中定义的WinForm组件(譬如:TextBox组件、ComBox组件、Label组件等)中的某些属性上,从而提供这些组件显示出数据表中的记录信息,也就实现了DbTextBox、DbCombox等组件。本文就是来探讨一下,如何在VB.Net中实现数据绑定。为了更清楚的说明问题,在讨论绑定的时候,在数据库的选择上,不仅选用了本地数据库Access 2000,而且也选用了远程数据库SQL Server 7.0。由于WinFrom组件比较多,但他们实现数据绑定的方法基本是一样的,在本文中,选用了三个比较常用的WinForm组件为代表,即:TextBox组件、ComBox组件和ListBox组件。<p ><ccid_nobr><b>一.数据库的数据结构:</b></ccid_nobr><p >Access数据库名称为"Sample.mdb",里面定义了一张"books"的数据表,字段属性为下表:<p ><ccid_nobr><div align="center"><TABLE border="1" width="390" cellspacing="0" cellpadding="0"  bordercolor="#111111"><TBODY><TR><TD>字段名称</TD><TD>字段类型</TD><TD width="137">代表意思</TD></TR><TR><TD>Bookid</TD><TD>数字</TD><TD width="137">序号</TD></TR><TR><TD>booktitle</TD><TD>文本</TD><TD width="137">书籍名称</TD></TR><TR><TD>bookauthor</TD><TD>文本</TD><TD width="137">书籍作者</TD></TR><TR><TD>bookprice</TD><TD>数字</TD><TD width="137">价格</TD></TR><TR><TD>bookstock</TD><TD>数字</TD><TD width="137">书架号</TD></TR></TBODY></TABLE></div></ccid_nobr><p >Sql Server 7.0的数据库服务器名称为"server1",数据库名称为"data1",在此数据库中也有一张"books"表,字段的属性同上。<p ><ccid_nobr><b>二.程序设计和运行的环境设置:</b></ccid_nobr><p ><ccid_nobr><ol><li>视窗2000服务器版</li><li>Microsoft Data Acess Component 2.6 以上版本 ( MDAC 2.6 )</li><li>.Net FrameWrok SDK Beta 2版</li></ol></ccid_nobr><p ><ccid_nobr><b>三.对TextBox组件进行数据绑定:</b></ccid_nobr><p >在整个数据绑定中,对不同的组件可以大致分为二类,一类是简单型数据绑定,另外一种是复杂型数据绑定。简单型的数据针对的对象是TextBox组件、Label组件等,绑定后组件的显示的记录只有一条;而复杂型的针对对象是ListBox组件、TreeView组件等,往往绑定后显示出来的记录是比较多的。对于简单型的数据绑定可以参考本文中TextBox组件的绑定的过程。对于复杂型的绑定过程可以参考本文中的ComBox组件和ListBox组件的绑定过程。<p ><ccid_nobr><ol><li>其实无论是和中数据绑定,首先要打开指定的数据表,得到数据集。下面语句是打开Access数据库中的"books"表,得到"myDataSet"数据集:<br><table width="500" border="1" cellspacing="0" cellpadding="0" bordercolorlight = "black" bordercolordark = "#FFFFFF"><tr><td bgcolor="e6e6e6" class="code">'打开数据表,返回数据集<br>public Sub GetConnected ( )<br>'创建一个 OleDbConnection<br>Dim strCon As String = &quot; Provider = Microsoft.Jet.OLEDB.4.0; Data Source = ..\sample.mdb&quot; <br>Dim myConn As OleDbConnection = new OleDbConnection ( ) <br>myConn.ConnectionString = strCon<br><br> Dim strCom As string = &quot; SELECT * FROM books &quot; <br>  '创建一个 DataSet<br>  myDataSet = new DataSet( ) <br><br>  myConn.Open ( ) <br>  '用 OleDbDataAdapter 得到一个数据集<br>  Dim myCommand As OleDbDataAdapter = new OleDbDataAdapter ( strCom , myConn )   <br>  '把Dataset绑定books数据表<br>  myCommand.Fill ( myDataSet , &quot;books&quot; ) <br>  '关闭此OleDbConnection<br>  myConn.Close ( ) <br>  End Sub       </td></tr></table></li><li>实现数据绑定:<br>TextBox组件通过下列语句就可以把已经得到的数据集"myDataSet"中的"books.bookid"字段值绑定到TextBox1的"Text"属性上:<br>TextBox1.DataBindings.Add ( New Binding ( &quot;Text&quot; , Me.myDataSet , &quot;books.bookid&quot; ) ) 了解了这二点,就不难实现对TextBox组件的数据绑定了。下面是实现对TextBox组件数据绑定的源程序代码(Text1.vb):<br><table width="500" border="1" cellspacing="0" cellpadding="0" bordercolorlight = "black" bordercolordark = "#FFFFFF"><tr><td bgcolor="e6e6e6" class="code">Imports System.Drawing<br>Imports System.Windows.Forms<br>Imports System.ComponentModel<br>Imports System<br>Imports System.Data.OleDb <br>Imports System.Data <br><br>ublic Class Form1<br>  Inherits Form<br><br>  Private WithEvents Button1 As Button<br>  Private TextBox1 As TextBox<br>  Private myDataSet As DataSet<br>  Private components As System.ComponentModel.Container<br><br> Public Sub New ( )<br>  MyBase.New()<br>  GetConnected ( )<br>  InitializeComponent ( )<br>  End Sub<br>  '清除在程序中使用过的资源 <br>  Protected Overloads Overrides Sub Dispose ( ByVal disposing As Boolean )<br>  If disposing Then<br>  If Not ( components Is Nothing ) Then<br>  components.Dispose ( )<br>  End If<br>  End If<br>  MyBase.Dispose ( disposing )<br>  End Sub<br>  '打开数据表,返回数据集<br>  public Sub GetConnected ( )<br>  '创建一个 OleDbConnection<br>  Dim strCon As String = &quot; Provider = Microsoft.Jet.OLEDB.4.0; Data Source   = ..\sample.mdb&quot; <br>  Dim myConn As OleDbConnection = new OleDbConnection ( ) <br>  myConn.ConnectionString = strCon<br><br> Dim strCom As string = &quot; SELECT * FROM books &quot; <br>  '创建一个 DataSet<br>  myDataSet = new DataSet( ) <br><br>  myConn.Open ( ) <br>  '用 OleDbDataAdapter 得到一个数据集<br>  Dim myCommand As OleDbDataAdapter = new OleDbDataAdapter ( strCom , myConn )   <br>  '把Dataset绑定books数据表<br>  myCommand.Fill ( myDataSet , &quot;books&quot; ) <br>  '关闭此OleDbConnection<br>  myConn.Close ( ) <br><br>End Sub<br>  '初始化窗体中的组件<br>  Private Sub InitializeComponent ( )<br>  Me.Text = &quot;对TextBox组件实现数据绑定!&quot;<br>  Me.Width = 400<br>  Me.Height = 300<br><br><br>  Button1 = New Button ( )<br>  TextBox1 = New TextBox ( )<br><br>  Button1.Left = 200<br>  Button1.Top = 200<br>  Button1.Width = 100<br>  Button1.Height = 40<br>  Button1.TabIndex = 0<br>  Button1.Text = &quot;数据绑定&quot;<br><br>  TextBox1.Left = 200<br>  TextBox1.Top = 30<br>  TextBox1.Width = 150<br>  TextBox1.Height = 40<br><br>  Me.Controls.Add ( Button1 )<br>  Me.Controls.Add ( TextBox1 )<br><br>  End Sub<br><br>  Private Sub Button1_Click ( ByVal sender As Object , _<br>  ByVal e As System.EventArgs ) Handles Button1.Click<br>  TextBox1.DataBindings.Add ( New Binding ( &quot;Text&quot; , Me.myDataSet ,   &quot;books.bookid&quot; ) ) <br>  End Sub<br>  End Class<br><br>Module Module1<br>  Sub Main ( )<br>  Application.Run ( new Form1 ( ) )<br>  End sub<br>  End Module    </td></tr></table><br>经过了下列语句编译后:<br><table width="500" border="1" cellspacing="0" cellpadding="0" bordercolorlight = "black" bordercolordark = "#FFFFFF"><tr><td bgcolor="e6e6e6" class="code"> vbc.exe /r:system.dll /r:system.windows.forms.dll /r:system.drawing.dll /r:system.data.dll<br> /r:system.xml.dll text1.vb         </td></tr></table> 可以得到如下界面:<br><center><img  src="http://www.hh010.com/upload_files/article/244/9_jsqqcu10166.gif"><br>图01:对TextBox组件绑定后的程序界面</center></li><li>把Sql Server 7.0上的字段绑定到TextBox的"Text"的属性上:<br>有了上面的知识,可以非常方便的得出下列代码,和上面的代码的主要区别在于选用的数据库引擎不一样,由此如果你使用的是Oracle等数据库实现这种操作,也只需要改变数据连接就可以了,具体如下(Text2.vb):<br><table width="500" border="1" cellspacing="0" cellpadding="0" bordercolorlight = "black" bordercolordark = "#FFFFFF"><tr><td bgcolor="e6e6e6" class="code">Imports System.Drawing<br>Imports System.Windows.Forms<br>Imports System.ComponentModel<br>Imports System<br>Imports System.Data.OleDb <br>Imports System.Data <br><br>ublic Class Form1<br>  Inherits Form<br><br>  Private WithEvents Button1 As Button<br>  Private TextBox1 As TextBox<br>  Private myDataSet As DataSet<br>  Private components As System.ComponentModel.Container<br><br>ublic Sub New ( )<br>  MyBase.New ( )<br>  GetConnected ( )<br>  InitializeComponent ( )<br>  End Sub<br>  '清除在程序中使用过的资源 <br>  Protected Overloads Overrides Sub Dispose ( ByVal disposing As Boolean )<br>  If disposing Then<br>  If Not ( components Is Nothing ) Then<br>  components.Dispose ( )<br>  End If<br>  End If<br>  MyBase.Dispose ( disposing )<br>  End Sub<br>  '打开数据表,返回数据集<br>  public Sub GetConnected ( )<br>  '设定数据连接字符串,此字符串的意思是打开Sql server数据库,服务器名称为server1,数据库为data1<br>  Dim strCon As String = &quotrovider = SQLOLEDB.1 ; Persist Security Info =   False ; User ID = sa ; Initial Catalog = data1 ; Data Source = server1 &quot;   <br>  Dim myConn As OleDbConnection = new OleDbConnection ( ) <br>  myConn.ConnectionString = strCon<br><br> Dim strCom As string = &quot; SELECT * FROM books &quot; <br>  '创建一个 DataSet<br>  myDataSet = new DataSet( ) <br><br>  myConn.Open ( ) <br>  '用 OleDbDataAdapter 得到一个数据集<br>  Dim myCommand As OleDbDataAdapter = new OleDbDataAdapter ( strCom , myConn )   <br>  '把Dataset绑定books数据表<br>  myCommand.Fill ( myDataSet , &quot;books&quot; ) <br>  '关闭此OleDbConnection<br>  myConn.Close ( ) <br><br> End Sub<br>  '初始化窗体中的组件<br>  Private Sub InitializeComponent ( )<br>  Me.Text = &quot;对TextBox组件实现数据绑定!&quot;<br>  Me.Width = 400<br>  Me.Height = 300<br>  Button1 = New Button ( )<br>  TextBox1 = New TextBox ( )<br><br>  Button1.Left = 200<br>  Button1.Top = 200<br>  Button1.Width = 100<br>  Button1.Height = 40<br>  Button1.TabIndex = 0<br>  Button1.Text = &quot;数据绑定&quot;<br><br>  TextBox1.Left = 200<br>  TextBox1.Top = 30<br>  TextBox1.Width = 150<br>  TextBox1.Height = 40<br><br>  Me.Controls.Add ( Button1 )<br>  Me.Controls.Add ( TextBox1 )<br><br>  End Sub<br><br>  Private Sub Button1_Click ( ByVal sender As Object , _<br>  ByVal e As System.EventArgs ) Handles Button1.Click<br>  TextBox1.DataBindings.Add ( New Binding ( &quot;Text&quot; , Me.myDataSet ,   &quot;books.bookid&quot; ) ) <br>  End Sub<br>  End Class<br><br>Module Module1<br>  Sub Main ( )<br>  Application.Run ( new Form1 ( ) )<br>  End sub<br>  End Module      </td></tr></table></li><li>对其他简单型的组件的数据绑定:<br>有了上面的这些代码,对其他也是简单型数据绑定组件,只需要把程序TextBox组件改为要绑定的组件就可以了。下面是把TextBox组件改为Label组件的程序代码(Label.vb)和编译好程序的运行界面:<br><table width="500" border="1" cellspacing="0" cellpadding="0" bordercolorlight = "black" bordercolordark = "#FFFFFF"><tr><td bgcolor="e6e6e6" class="code">Imports System.Drawing<br>Imports System.Windows.Forms<br>Imports System.ComponentModel<br>Imports System<br>Imports System.Data.OleDb <br>Imports System.Data <br><br>ublic Class Form1<br>  Inherits Form<br><br>  Private WithEvents Button1 As Button<br>  Private Label1 As Label<br>  Private myDataSet As DataSet<br>  Private components As System.ComponentModel.Container<br><br> Public Sub New ( )<br>  MyBase.New()<br>  GetConnected ( )<br>  InitializeComponent ( )<br>  End Sub<br>  '清除在程序中使用过的资源 <br>  Protected Overloads Overrides Sub Dispose ( ByVal disposing As Boolean )<br>  If disposing Then<br>  If Not ( components Is Nothing ) Then<br>  components.Dispose ( )<br>  End If<br>  End If<br>  MyBase.Dispose ( disposing )<br>  End Sub<br>  '打开数据表,返回数据集<br>  public Sub GetConnected ( )<br>  '创建一个 OleDbConnection<br>  Dim strCon As String = &quot; Provider = Microsoft.Jet.OLEDB.4.0; Data Source   = ..\sample.mdb&quot; <br>  Dim myConn As OleDbConnection = new OleDbConnection ( ) <br>  myConn.ConnectionString = strCon<br><br> Dim strCom As string = &quot; SELECT * FROM books &quot; <br>  '创建一个 DataSet<br>  myDataSet = new DataSet( ) <br><br>  myConn.Open ( ) <br>  '用 OleDbDataAdapter 得到一个数据集<br>  Dim myCommand As OleDbDataAdapter = new OleDbDataAdapter ( strCom , myConn )   <br>  '把Dataset绑定books数据表<br>  myCommand.Fill ( myDataSet , &quot;books&quot; ) <br>  '关闭此OleDbConnection<br>  myConn.Close ( )<br><br> End Sub<br>  '初始化窗体中的组件<br>  Private Sub InitializeComponent ( )<br>  Me.Text = &quot;对Label组件实现数据绑定!&quot;<br>  Me.Width = 400<br>  Me.Height = 300<br><br>  Button1 = New Button ( )<br>  Label1 = New Label ( )<br><br>  Button1.Left = 200<br>  Button1.Top = 200<br>  Button1.Width = 100<br>  Button1.Height = 40<br>  Button1.TabIndex = 0<br>  Button1.Text = &quot;数据绑定&quot;<br><br>  Label1.Left = 200<br>  Label1.Top = 30<br>  Label1.Width = 150<br>  Label1.Height = 40<br><br>  Me.Controls.Add ( Button1 )<br>  Me.Controls.Add ( Label1 )<br><br>  End Sub<br><br>  Private Sub Button1_Click ( ByVal sender As Object , _<br>  ByVal e As System.EventArgs ) Handles Button1.Click<br>  Label1.DataBindings.Add ( New Binding ( &quot;Text&quot; , Me.myDataSet , &quot;books.bookid&quot;   ) ) <br>  End Sub<br>  End Class<br><br>Module Module1<br>  Sub Main ( )<br>  Application.Run ( new Form1 ( ) )<br>  End sub<br>  End Module      </td></tr></table><br><center><img  src="http://www.hh010.com/upload_files/article/244/9_ef1bie10167.gif"><br>图02:对Label组件绑定后的程序界面</center></li></ol></ccid_nobr><p ><ccid_nobr><b>四.对ComBox组件进行数据绑定:</b></ccid_nobr><p >上面介绍的是对组件的简单数据绑定,对组件的复杂数据绑定和它有所区别,也有所相同,具体如下:<p ><ccid_nobr><ol><li>要对ComBox组件实现数据绑定,首先也是要打开数据表,得到数据集。这和上面TextBox组件的代码大致一样,在此略过。</li><li> 实现数据绑定:<br>设定了Combox组件的三个属性就可以实现数据绑定了,这三个属性是"DataSource"、"DisplayMember"、"ValueMember"。其中"DataSource"是指定的数据集;"DisplayMember"是ComBox组件显示的字段值;"ValueMember"是ComBox组件选择后的值。具体代码如下:<br><table width="500" border="1" cellspacing="0" cellpadding="0" bordercolorlight = "black" bordercolordark = "#FFFFFF"><tr><td bgcolor="e6e6e6" class="code">ComboBox1.DataSource = Me.myDataSet<br>ComboBox1.DisplayMember = &quot;books.booktitle&quot;<br>ComboBox1.ValueMember = &quot;books.booktitle&quot;<br>由此可以得到ComBox组件数据绑定的源程序代码(ComBox1.vb),具体如下:<br>Imports System.Drawing<br>Imports System.Windows.Forms<br>Imports System.ComponentModel<br>Imports System<br>Imports System.Data.OleDb <br>Imports System.Data<br><br> Public Class Form1<br>  Inherits Form<br><br>  Private WithEvents Button1 As Button<br>  Private ComboBox1 As ComboBox<br>  Private myDataSet As DataSet<br>  Private components As System.ComponentModel.Container<br><br> Public Sub New ( )<br>  MyBase.New()<br>  GetConnected ( )<br>  InitializeComponent ( )<br>  End Sub<br>  '清除在程序中使用过的资源 <br>  Protected Overloads Overrides Sub Dispose ( ByVal disposing As Boolean )<br>  If disposing Then<br>  If Not ( components Is Nothing ) Then<br>  components.Dispose ( )<br>  End If<br>  End If<br>  MyBase.Dispose ( disposing )<br>  End Sub<br>  '打开数据表,返回数据集<br>  public Sub GetConnected ( )<br>  '创建一个 OleDbConnection<br>  Dim strCon As String = &quot; Provider = Microsoft.Jet.OLEDB.4.0; Data Source   = ..\sample.mdb&quot; <br>  Dim myConn As OleDbConnection = new OleDbConnection ( ) <br>  myConn.ConnectionString = strCon<br><br> Dim strCom As string = &quot; SELECT * FROM books &quot; <br>  '创建一个 DataSet<br>  myDataSet = new DataSet( ) <br><br>  myConn.Open ( ) <br>  '用 OleDbDataAdapter 得到一个数据集<br>  Dim myCommand As OleDbDataAdapter = new OleDbDataAdapter ( strCom , myConn )   <br>  '把Dataset绑定books数据表<br>  myCommand.Fill ( myDataSet , &quot;books&quot; ) <br>  '关闭此OleDbConnection<br>  myConn.Close ( ) <br><br> End Sub<br><br>  Private Sub InitializeComponent ( )<br>  Me.Text = &quot;对ComBox组件实现数据绑定!&quot;<br>  Me.Width = 400<br>  Me.Height = 300<br><br><br>  Button1 = New Button ( )<br>  ComboBox1 = New ComboBox ( )<br><br>  Button1.Left = 200<br>  Button1.Top = 200<br>  Button1.Width = 100<br>  Button1.Height = 40<br>  Button1.TabIndex = 0<br>  Button1.Text = &quot;按钮&quot;<br><br> ComboBox1.Left =150<br>  ComboBox1.Top =50<br><br>  Me.Controls.Add ( Button1 )<br>  Me.Controls.Add ( ComboBox1 ) <br><br>  End Sub<br><br>  Private Sub Button1_Click ( ByVal sender As Object , _<br>  ByVal e As System.EventArgs ) Handles Button1.Click<br>  ComboBox1.DataSource = Me.myDataSet<br>  ComboBox1.DisplayMember = &quot;books.booktitle&quot;<br>  ComboBox1.ValueMember = &quot;books.booktitle&quot;<br>  End Sub<br><br>  End Class<br><br>Module Module1<br>  Sub Main ( )<br>  Application.Run ( new Form1 ( ) )<br>  End sub<br>  End Module<br><br></td></tr></table>经过了下列语句编译后:<table width="500" border="1" cellspacing="0" cellpadding="0" bordercolorlight = "black" bordercolordark = "#FFFFFF"><tr><td bgcolor="e6e6e6" class="code">vbc.exe /r:system.dll /r:system.windows.forms.dll /r:system.drawing.dll /r:system.data.dll<br> /r:system.xml.dll combox1.vb          </td></tr></table>运行程序可以得到如下界面:<center><img  src="http://www.hh010.com/upload_files/article/244/9_npzcgf10168.gif"><br>图03:对ComBox组件绑定后的程序界面</center></li><li>ComBox组件对数据库Sql Server 7.0的字段进行数据绑定:<br>同样只需更好数据引擎就可以得到针对数据库Sql Server 7.0数据绑定的源代码,如下:<br><table width="500" border="1" cellspacing="0" cellpadding="0" bordercolorlight = "black" bordercolordark = "#FFFFFF"><tr><td bgcolor="e6e6e6" class="code"> Imports System.Drawing<br>Imports System.Windows.Forms<br>Imports System.ComponentModel<br>Imports System<br>Imports System.Data.OleDb <br>Imports System.Data <br><br>ublic Class Form1<br>  Inherits Form<br><br>  Private WithEvents Button1 As Button<br>  Private ComboBox1 As ComboBox<br>  Private myDataSet As DataSet<br>  Private components As System.ComponentModel.Container<br><br> Public Sub New ( )<br>  MyBase.New()<br>  GetConnected ( )<br>  InitializeComponent ( )<br>  End Sub<br>  '清除在程序中使用过的资源 <br>  Protected Overloads Overrides Sub Dispose ( ByVal disposing As Boolean )<br>  If disposing Then<br>  If Not ( components Is Nothing ) Then<br>  components.Dispose ( )<br>  End If<br>  End If<br>  MyBase.Dispose ( disposing )<br>  End Sub<br>  '打开数据表,返回数据集<br>  public Sub GetConnected ( )<br>  '设定数据连接字符串,此字符串的意思是打开Sql server数据库,服务器名称为server1,数据库为data1<br>  Dim strCon As String = &quotrovider = SQLOLEDB.1 ; Persist Security Info =   False ; User ID = sa ; Initial Catalog = data1 ; Data Source = server1 &quot;   <br>  Dim myConn As OleDbConnection = new OleDbConnection ( ) <br>  myConn.ConnectionString = strCon<br><br>Dim strCom As string = &quot; SELECT * FROM books &quot; <br>  '创建一个 DataSet<br>  myDataSet = new DataSet( ) <br><br>  myConn.Open ( ) <br>  '用 OleDbDataAdapter 得到一个数据集<br>  Dim myCommand As OleDbDataAdapter = new OleDbDataAdapter ( strCom , myConn )   <br>  '把Dataset绑定books数据表<br>  myCommand.Fill ( myDataSet , &quot;books&quot; ) <br>  '关闭此OleDbConnection<br>  myConn.Close ( )<br><br> End Sub<br><br>  Private Sub InitializeComponent ( )<br>  Me.Text = &quot;对ComBox组件实现数据绑定!&quot;<br>  Me.Width = 400<br>  Me.Height = 300<br><br><br>  Button1 = New Button ( )<br>  ComboBox1 = New ComboBox ( )<br><br>  Button1.Left = 200<br>  Button1.Top = 200<br>  Button1.Width = 100<br>  Button1.Height = 40<br>  Button1.TabIndex = 0<br>  Button1.Text = &quot;按钮&quot;<br><br> ComboBox1.Left =150<br>  ComboBox1.Top =50<br><br>  Me.Controls.Add ( Button1 )<br>  Me.Controls.Add ( ComboBox1 ) <br><br>  End Sub<br><br>  Private Sub Button1_Click ( ByVal sender As Object , _<br>  ByVal e As System.EventArgs ) Handles Button1.Click<br>  ComboBox1.DataSource = Me.myDataSet<br>  ComboBox1.DisplayMember = &quot;books.booktitle&quot;<br>  ComboBox1.ValueMember = &quot;books.booktitle&quot;<br>  End Sub<br><br>  End Class<br>  Module Module1<br>  Sub Main ( )<br>  Application.Run ( new Form1 ( ) )<br>  End sub<br>  End Module        </td></tr></table></li></ol></ccid_nobr><p ><ccid_nobr><b>五.对ListBox组件进行数据绑定:</b></ccid_nobr><p ><ccid_nobr><ol><li>对ListBox组件的数据绑定和ComBox组件的数据绑定大致是相同的,也是对其的三个属性"DataSource"、"DisplayMember"、"ValueMember"进行设定。具体的过程可以参考一下上面ComBox组件的设定过程,下面是对ListBox组件数据绑定的源程序代码(ListBox1.vb):<br><table width="500" border="1" cellspacing="0" cellpadding="0" bordercolorlight = "black" bordercolordark = "#FFFFFF"><tr><td bgcolor="e6e6e6" class="code">Imports System.Drawing<br>Imports System.Windows.Forms<br>Imports System.ComponentModel<br>Imports System<br>Imports System.Data.OleDb <br>Imports System.Data <br><br>ublic Class Form1<br>  Inherits Form<br><br>  Private WithEvents Button1 As Button<br>  Private ListBox1 As ListBox<br>  Private myDataSet As DataSet<br>  Private components As System.ComponentModel.Container<br><br> Public Sub New ( )<br>  MyBase.New()<br>  GetConnected ( )<br>  InitializeComponent ( )<br>  End Sub<br>  '清除在程序中使用过的资源 <br>  Protected Overloads Overrides Sub Dispose ( ByVal disposing As Boolean )<br>  If disposing Then<br>  If Not ( components Is Nothing ) Then<br>  components.Dispose ( )<br>  End If<br>  End If<br>  MyBase.Dispose ( disposing )<br>  End Sub<br>  '打开数据表,返回数据集<br>  public Sub GetConnected ( )<br>  '创建一个 OleDbConnection<br>  Dim strCon As String = &quot; Provider = Microsoft.Jet.OLEDB.4.0; Data Source   = ..\sample.mdb&quot;<br>  Dim myConn As OleDbConnection = new OleDbConnection ( ) <br>  myConn.ConnectionString = strCon<br><br> Dim strCom As string = &quot; SELECT * FROM books &quot; <br>  '创建一个 DataSet<br>  myDataSet = new DataSet( ) <br><br>  myConn.Open ( ) <br>  '用 OleDbDataAdapter 得到一个数据集<br>  Dim myCommand As OleDbDataAdapter = new OleDbDataAdapter ( strCom , myConn )   <br>  '把Dataset绑定books数据表<br>  myCommand.Fill ( myDataSet , &quot;books&quot; ) <br>  '关闭此OleDbConnection<br>  myConn.Close ( ) <br><br> End Sub<br><br>  Private Sub InitializeComponent ( )<br>  Me.Text = &quot;对ListBox组件实现数据绑定!&quot;<br>  Me.Width = 400<br>  Me.Height = 300<br><br><br>  Button1 = New Button ( )<br>  ListBox1 = New ListBox ( )<br><br>  Button1.Left = 200<br>  Button1.Top = 200<br>  Button1.Width = 100<br>  Button1.Height = 40<br>  Button1.TabIndex = 0<br>  Button1.Text = &quot;数据绑定&quot;<br><br> ListBox1.Left =150<br>  ListBox1.Top =50<br><br>  Me.Controls.Add ( Button1 )<br>  Me.Controls.Add ( ListBox1 ) <br><br>  End Sub<br><br>  Private Sub Button1_Click ( ByVal sender As Object , _<br>  ByVal e As System.EventArgs ) Handles Button1.Click<br>  ListBox1.DataSource = Me.myDataSet<br>  ListBox1.DisplayMember = &quot;books.booktitle&quot;<br>  ListBox1.ValueMember = &quot;books.booktitle&quot;<br>  End Sub<br><br>  End Class<br><br>Module Module1<br>  Sub Main ( )<br>  Application.Run ( new Form1 ( ) )<br>  End sub<br>  End Module      </td></tr></table><br>经过了下列语句编译后:<br><table width="500" border="1" cellspacing="0" cellpadding="0" bordercolorlight = "black" bordercolordark = "#FFFFFF"><tr><td bgcolor="e6e6e6" class="code">vbc.exe /r:system.dll /r:system.windows.forms.dll /r:system.drawing.dll /r:system.data.dll<br> /r:system.xml.dll listbox1.vb          </td></tr></table><br>可以得到如下运行界面:<br><center><img  src="http://www.hh010.com/upload_files/article/244/9_bnngjy10169.gif"><br>图04:对ListBox组件绑定后的程序界面</center></li></li><li>ListBox组件对数据库Sql Server 7.0的字段进行数据绑定源程序代码(ListBox1.vb):<br>同样只需更好数据引擎就可以得到针对数据库Sql Server 7.0数据绑定的源代码,如下:<br><table width="500" border="1" cellspacing="0" cellpadding="0" bordercolorlight = "black" bordercolordark = "#FFFFFF"><tr><td bgcolor="e6e6e6" class="code">Imports System.Drawing<br>Imports System.Windows.Forms<br>Imports System.ComponentModel<br>Imports System<br>Imports System.Data.OleDb <br>Imports System.Data <br><br>ublic Class Form1<br>  Inherits Form<br><br>  Private WithEvents Button1 As Button<br>  Private ListBox1 As ListBox<br>  Private myDataSet As DataSet<br>  Private components As System.ComponentModel.Container<br><br> Public Sub New ( )<br>  MyBase.New()<br>  GetConnected ( )<br>  InitializeComponent ( )<br>  End Sub<br>  '清除在程序中使用过的资源 <br>  Protected Overloads Overrides Sub Dispose ( ByVal disposing As Boolean )<br>  If disposing Then<br>  If Not ( components Is Nothing ) Then<br>  components.Dispose ( )<br>  End If<br>  End If<br>  MyBase.Dispose ( disposing )<br>  End Sub<br>  '打开数据表,返回数据集<br>  public Sub GetConnected ( )<br>  '设定数据连接字符串,此字符串的意思是打开Sql server数据库,服务器名称为server1,数据库为data1<br>  Dim strCon As String = &quotrovider = SQLOLEDB.1 ; Persist Security Info =   False ; User ID = sa ; Initial Catalog = data1 ; Data Source = server1 &quot;   <br>  Dim myConn As OleDbConnection = new OleDbConnection ( ) <br>  myConn.ConnectionString = strCon<br><br> Dim strCom As string = &quot; SELECT * FROM books &quot; <br>  '创建一个 DataSet<br>  myDataSet = new DataSet( ) <br><br>  myConn.Open ( ) <br>  '用 OleDbDataAdapter 得到一个数据集<br>  Dim myCommand As OleDbDataAdapter = new OleDbDataAdapter ( strCom , myConn )   <br>  '把Dataset绑定books数据表<br>  myCommand.Fill ( myDataSet , &quot;books&quot; ) <br>  '关闭此OleDbConnection<br>  myConn.Close ( ) <br><br> End Sub<br><br>  Private Sub InitializeComponent ( )<br>  Me.Text = &quot;对ListBox组件实现数据绑定!&quot;<br>  Me.Width = 400<br>  Me.Height = 300<br><br><br>  Button1 = New Button ( )<br>  ListBox1 = New ListBox ( )<br><br>  Button1.Left = 200<br>  Button1.Top = 200<br>  Button1.Width = 100<br>  Button1.Height = 40<br>  Button1.TabIndex = 0<br>  Button1.Text = &quot;数据绑定&quot;<br><br> ListBox1.Left =150<br>  ListBox1.Top =50<br><br>  Me.Controls.Add ( Button1 )<br>  Me.Controls.Add ( ListBox1 ) <br><br>  End Sub<br><br>  Private Sub Button1_Click ( ByVal sender As Object , _<br>  ByVal e As System.EventArgs ) Handles Button1.Click<br>  ListBox1.DataSource = Me.myDataSet<br>  ListBox1.DisplayMember = &quot;books.booktitle&quot;<br>  ListBox1.ValueMember = &quot;books.booktitle&quot;<br>  End Sub<br><br>  End Class<br><br><br>  Module Module1<br>  Sub Main ( )<br>  Application.Run ( new Form1 ( ) )<br>  End sub<br>  End Module         </td></tr></table></li></ol></ccid_nobr><p ><ccid_nobr><b>六.总结:</b></ccid_nobr><p >数据绑定技术是用.Net程序开发语言进行数据方面编程的基本,也是最为重要的环节。是对数据库中记录进行添加、删除、浏览、修改等操作的基础。虽然对于不同的WinForm组件,数据绑定的方法有所差别,但总体来说,还是大同小异的,只需要对上面的代码进行一定的修改就可以了。虽然对这些WinFrom组件已经绑定了数据,但这些组件显示出来的数据都是静止的,在下面的文章中,我们将依靠数据绑定为基础,实现数据记录的浏览、添加、删除、修改等操作,那就让我们下回见吧!<p >(责任编辑 <ccid_nobr>尤北</ccid_nobr>)                                 <p align="center"></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-10 15:49 , Processed in 0.068718 second(s), 24 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表