摘要: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