ASP.NET 2.0:如何讓 DropDownList 同時擁有資料來源項目與自訂項目

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