日期:2009-10-24  浏览次数:20396 次

运行
我们运行这个程序来看看是否国家可以正常的显示了。
1. 按下F5来运行程序。
2. 点击Countries下拉框来看看是否国家数据已经可以显示了。如果正常的话,你就可以看到如下图8所示的程序:


图8.使用ComboBox来显示小数据集可以提高性能
带参数的查询来显示数据
现在已经可以看到ComboBox中的国家数据了,接着我们就来做选择ComboBox中的一个国家,在DataGrid中只显示这个国家的客户资料。我们按照这些步骤来做:
1. 把form的load事件中读取DataGrid中数据的代码删掉。
2. 修改sqlDataAdapter1的SelectCommand属性的SQL查询语句,在查询语句中增加我们要使用的参数。
3. 增加代码来处理用户选择国家后的事件。
删掉form的load事件中的读取DataGrid数据的代码
因为DataGrid中的数据显示将由ComboBox中被选择的国家来定,我们就不再需要form的load事件中使用的代码。把form的load事件中的下列代码删掉:
DsCustomers1.Clear()
SqlDataAdapter1.Fill(DsCustomers1, "Customers")
修改SelectCommand属性
接着我们就来修改sqlDataAdapter1的SelectCommand属性,把要使用的参数加到这个查询中去。按照下面的步骤操作:
1. 在form的设计窗口,点击sqlDataAdapter1对象。
2. 按下F4来显示属性窗口。
3. 点击SelectCommand左边的+号来展开SelectCommand的子属性。
4. 点击CommandText属性,点击Build(…)来显示Query Builder对话框。
5. 在SQL查询语句中增加下面的where语句:
SELECT CustomerID, CompanyName, ContactName, Country
FROM Customers
WHERE Country = @CountryParam
6. 点击OK
7. 点击sqlDataAdapter1对象
8. 点击Data,点击Generate DataSet,然后点击OK来重新生成已有的DataSet。

图9. 在SQL查询语句中增加查询参数
增加代码来处理用户选择国家之后的事件
当用户选择了国家之后,我们来添加要改变DataGrid中数据的代码。照下面的步骤作就可以实现这个功能:
1. 点击cboCountry的SelectedIndexChanged事件
2. 设置DataGrid的查询参数为cboCountry中被选择的值
3. 填充DataSet中的数据
按照以下步骤来增加代码:
1. 打开form为设计窗口
2. 双击cboCountry来显示SelectedIndexChanged事件的代码。这个事件发生在用户改变选择的cboCountry值的时候。
3. 在这个事件中手写下面的代码:
Private Sub cboCountry_SelectedIndexChanged( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles cboCountry.SelectedIndexChanged
' Get the Parameter object and Set value
With SqlDataAdapter1.SelectCommand.Parameters
.Item("@CountryParam").Value = _
cboCountry.SelectedValue
End With
' Clear the dataset
DsCustomers1.Clear()
' Load the dataset using the parameter value
SqlDataAdapter1.Fill(DsCustomers1, "Customers")
End Sub
我们使用sqlDataAdapter1的SelectCommand属性来取得Parameter对象,然后把这个对象的Value属性设为cboCountry的SelectedValue属性。由于我们设置了cboCountry的ValueMember属性为Country字段,因此cboCountry的SelectedValue属性就为国家的值。设置好Value属性后,就可以把数据填充到DataSet中了,DataGrid就自动显示对应国家的客户资料。
运行
现在可以看看我们的程序究竟是怎么工作的了。
1. 按下F5来运行程序。
2. 在ComboBox中选择一个国家,就可以在DataGrid中看到对应国家的客户资料
3. 选择不同的国家,来显示不同国家的客户资料
D. 使用TextBox的数据绑定
前面的例子都是使用DataGrid来显示数据,在我们的程序中,使用TextBox来显示单独的行数据提供编辑同样是非常重要的。这篇文章没有将怎样编辑数据,我们只讲如何在TextBox中显示数据。下面是主要的步骤:
1. 生成一个类似于图10的Form
2. 生成、配置你要使用的DataSet
3. 添加控件到form中,并且把他们绑定到数据源上
4. 添加导航按钮,提供一行一行浏览数据的功能
按照上面的几个步骤做下来,我们创建一个读取Customers表的DataSet。在添加SqlDataAdapter的时候,我们选择已有的连接到Northwind数据库的连接,生成的SQL查询语句中从Customers表中的CustomerID, CompanyName, ContactName, 和ContactTitle列。接着就可以添加控件,并且绑定数据了。

图10. 我们使用的简单的例子窗口
添加控件到form并且绑定数据
添加控件到form中,并且设置他们的属性为表1指定的值:
表1.用于form的控件(如图10所示)
Control Type Property Value
Label Name Label1
Text CustomerID
TextBox Name txtCustomerID
Text Blank
Label Name Label2
Text Company Name
TextBox Name txtCompanyName
Text Blank
Label Name Label3
Text Contact Name
TextBox Name txtContactName
Text Blank
Label Name Label4
Text Contact Title
TextBox Name txtContactTitle
Text Blank
CommandButton Name btnPrevious
Text <
CommandButton Name btnNext
Text >
接着就把每一个TextBox绑定到DataSet的一列上,我们按照下面的步骤作:
1. 选择要绑定数据的TextBox
2. 按下F4来显示属性窗口
3. 点击展开DataBindings属性
4. 在DataBindings属性下,选择Text属性
5. 打开下拉列表把数据绑定到对应的列上。
比如:要绑定txtCustomerID到CustomerID列上,点击dsCustomers1的+号,然后选择CustomerID。
在所有的TextBox都绑定好之后,就像是在DataGrid中显示数据那样,我们同样要在form的load事件中手写代码来导出数据。下面就是我们添加的代码:
Public Sub New()
MyBase.New()
' This call is required by the
' Windows F