中文信息:
数据绑定和控件的介绍
当微软公司开发出窗体控件和网页控件时,它就拼命的实现数据绑定.当时还是使用的是vb,他们就进行了大篇幅的功能程序编辑.
最有效的数据绑定不是我们说的dataset,而是对象,结构和对象集.数据绑定有个显著的特点:网页中实现数据绑定的控件,我们不要对它进行其他的操作.数据绑定后只有读的操作,没其他的操作,也就是说,控件把数据源的信息拿过了,只是用用的,不能操作.而我们在建其他的对象或UI时,不需要关心它,而它的操作是一目了然的.
WINDOWS窗体控件数据绑定可以读和写,而且有的操作更复杂.这样一来,这些数据从数据库中调出,并在我们的UI控件中显示,一旦UI控件的数据改变,数据库中的数据也随着它改变,当然这些操作不需要我们来完成,不过数据的更改难免会让我们写更多的代码.由于上面的特点,我们可以把它的这些特点用到我们的企业和类集里去,这些特点包括:
1.拥有UI等数据的修改.
2.可以使的DATAGRID数据进行正确的绑定.
3.在DATAGRID中子对象可以进行编辑.
4.在DATAGRID中可以动态的增加或删除子对象.
对于一个简单的对象,当我们修改正确的数据时,我可以通过事件来完成对窗体数据的绑定.
通过这些事件,我们可以使UI的数据随我们的修改而在任何时候进行更新.
在UI中一旦其正确的规则被加入的数据破坏,那我们必须知道如何去修改.同样使用不确当的事件来绑定数据,会使绑定出错.
另外,在这里我们还有许多可选择的特点可以用.例如,DATAGRID就是一个常用的绑定控件.件通过正确的使用我们的集,我们可以使DATAGRID控件更加的自能化.
我们可以一起使用IbindingList 和DATAGRID ,那样会更方便.
最后在集使用当中有着比较显著的特点,我们称作为子对象.子对象可以使用IEDITABLEOBJECT使的DATAGRID在数据编辑上更加的方便.当有无效数据的时候,子对象可以使用IDATAERRINFO,从而使DATAGRID对出错的地方用下画线标出来.
总之,我们只需要写一点点的代码就可以使DATAGRID的优点发挥的淋漓尽致.
举例一个窗口绑定的例子:
一个窗体上的控件的属性绑定不是复杂的,举个例子,看看下面的简单的order类:
Public Class Order
Private mID As String = ""
Private mCustomer As String = ""
Public Property ID() As String
Get
Return mID
End Get
Set(ByVal Value As String)
mID = Value
End Set
End Property
Public Property Customer() As String
Get
Return mCustomer
End Get
Set(ByVal Value As String)
mCustomer = Value
End Set
End Property
End Class
这里的比较特殊的代码是:
Private mID As String = ""
Private mCustomer As String = ""
注意在这里变量的初始化是没有值的,在Visual Basic .NET中当他们声明时就自动初始化了,所以他们不是很特殊.
由于我们不这样做的话,数据绑定就会失败.这表明变量的自动初始化不会发生在数据绑定到对象的时候,没有初始化的变量在绑定数据的时候会抛出例外.
所以变量的声明必须在数据绑定之前,这意味着我们在数据绑定前对变量正确的初始化,会让我避免产生例外
我们建一个窗体,在它load 的时候把数据绑定到它控件的属性上去.
绑定的代码如下:
Private mOrder As Order
Private Sub OrderEntry_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
mOrder = New Order()
txtID.DataBindings.Add("Text", mOrder, "ID")
txtCustomer.DataBindings.Add("Text", mOrder, "Customer")
End Sub
事实上每个窗体上的控件都有一个数据绑定的连接.这个连接库包含一系列数据绑定的属性和
数据源的属性.更有趣的是我们从一个数据源绑定几个不同的控件,同样我也可以把多个数据源绑定到不同的控件属性上.
通过简单的数据绑定代码我们就可以创建很多复杂的拥护接口.例如:用上面例子的代码,我们把一个SAVE按钮的enabled 属性绑定到一个business对象的ISVALID属性上.当对象准备保存的时候这个按钮控件对用户来说是有效的.
记住这种数据绑定不是直接的,不光是数据从对象显示到窗口上,而且用户的对数据的更改是自动返回的.这些都是在用户浏览每个区域的时候发生,例如: 当控件失去焦点时,我们的用户改变的TXTID控件的VALUE的值,这个数据更新到对象上去,这些数据都是通过SET属性来实现的.我们不需做其他的数据绑定操作,系统通过它的属性自动取得数据.
……