ASP.NET 2.0:如何让DropDownList同时拥有数据来源项目与自订项目
图表1
其实在许多时候,我们会希望网页上的DropDownList控件同时拥有数据来源项目与自订项目。这样说如果您还不是很明白,请看图表1所示的网页范例。我们发现,第一个选项「请选择一个部门」显然是一个自订项目,而其它选项则是来自数据表的「部门」字段。以本范例而言,欲完成这样的设计,请依序进行下列设定:
1. 首先,请于网页上选取您的DropDownList控件,并于「属性」窗口中将属性AppendDataBoundItems属性设定成True。
2. 紧接着,按一下Items属性之右侧的「…」按钮。
3. 「ListItem集合编辑器」对话框开启后,请按一下「加入」按钮,并于右侧窗格进行下列设定:
Ø 将Text属性设定成“请选择一个部门”。
Ø 由于我们希望此自订选项一开始就被选取,因此请将Selected属性设定成True。
确认您的「ListItem集合编辑器」对话框如图表2所示后,按一下「确定」按钮。
(请注意:您可以加入多个自订项目,欲加入多个自订项目,请反复步骤3的操作,直到您已经加入所需的多个自订项目为止)
图表2
4. 最后,您必须替DropDownList控件设定来自数据表之「部门」字段的选项。欲达此目的,请从DropDownList控件的智能卷标选项中选取「设定数据来源」选项,以便建立一个SqlDataDataSource对象来查询出「部门」字段的部门作为选项。此部分我们就不再一一赘述,结果应如图表3所示。
图表3
我想,上述作法是ASP.NET 2.0非常不错的一项功能,因为您不需撰写复杂的程序代码即可轻易完成相关处理。当然啦,如果您是位高竿的程序设计师,不想通过接口来处理,也可以直接在网页的Load事件处理例程中撰写下列程序代码来达到相同的目的:(不过我们建议您能够少写程序就少写些程序吧)
Protected Sub Page_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Me.DepartmentDropDownList.Items.Add("请选择一个部门")
' 利用 SqlConnectionStringBuilder 对象来构建连接字符串。
Dim connectStringBuilder As New SqlConnectionStringBuilder()
connectStringBuilder.DataSource = "(local)\SQLEXPRESS"
connectStringBuilder.InitialCatalog = "北风贸易"
connectStringBuilder.IntegratedSecurity = True
Try
Using cn As New SqlConnection(connectStringBuilder.ConnectionString)
Dim cmdLiming As New SqlCommand( _
"SELECT DISTINCT 部门 FROM 章立民研究室", cn)
cn.Open()
Using dr As SqlDataReader = cmdLiming.ExecuteReader
While dr.Read
DepartmentDropDownList.Items.Add(dr.GetSqlString(0).Value)
End While
End Using
End Using
Catch ex As Exception
Me.lblMessage.Text = ex.Message
End Try
End If
End Sub