Web版ドロップダウンリスト [VB.NET]

Visual Basic.NET ADO.NETデータベースプログラミング

Web版:DataGrid テーブルレコード表示

DataAdapterオブジェクトのFillメソッドの引数にDataSetとテーブル名を指定し、レコード列データを取得して、ドロップダウンリストに表示します。

MDB版 サンプルプログラム

DropDownList1DropDownList2DropDownList3
コントロール プロパティ 設定値
DdlBumonMei AutoPostBack True
LblBumonCode BorderStyle Ridge
LblMessage BorderStyle Groove

MessageBox.Showを使えないので、ラベルにエラーメッセージを表示します。

コンボボックスに表示する列名(フィールド名)をドロップダウンリストのDataTextFieldプロパティに設定し、選択した項目のコードを取得できるように、DataValueFieldプロパティにコード列名を設定します。

ソースリストの枠内をクリックすると全選択できます。

Imports System.Data.OleDb

Public Class WebForm1
  Inherits System.Web.UI.Page

  Protected WithEvents Label1 As System.Web.UI.WebControls.Label
  Protected WithEvents DdlBumonMei _
      As System.Web.UI.WebControls.DropDownList
  Protected WithEvents Label2 As System.Web.UI.WebControls.Label
  Protected WithEvents LblBumonCode As System.Web.UI.WebControls.Label
  Protected WithEvents LblMessage As System.Web.UI.WebControls.Label

#Region " Web フォーム デザイナで生成されたコード "
    ' 自動生成部分省略
#End Region

  '---------------------------------------------------------
  ' フォームロード:部門名をドロッップダウンリストに表示
  '---------------------------------------------------------
  Private Sub Page_Load(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles MyBase.Load

      If Not IsPostBack Then
          Dim con As New OleDbConnection()
          Dim cmd As New OleDbCommand()
          Dim da As New OleDbDataAdapter()
          Dim ds As DataSet = New DataSet()

          Try
              ' 仮想アプリケーションルートパスを取得
              Dim vPath As String = Request.ApplicationPath
              ' 仮想アプリケーションルートパスの物理パスを取得
              Dim path As String = Server.MapPath(vPath)

              ' DB接続文字列の設定
              ' プロジェクトフォルダにsample.mdbを置く
              con.ConnectionString = _
              "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
              path & "\sample.mdb"

              ' コネクションの設定
              cmd.Connection = con

              ' SQL文の設定
              cmd.CommandText = "SELECT 部門コード, 部門名 "
              cmd.CommandText &= "FROM 部門テーブル "
              cmd.CommandText &= "ORDER BY 部門コード"

              ' 部門テーブルから全レコードデータを取得する
              da.SelectCommand = cmd
              ds.Clear()
              da.Fill(ds, "部門テーブル")

              Me.DdlBumonMei.DataSource = ds.Tables("部門テーブル")
              ' コンボボックスに部門名を表示する
              Me.DdlBumonMei.DataTextField = "部門名"
              ' 部門名に対応した部門コードを取得する
              Me.DdlBumonMei.DataValueField = "部門コード"

              ' データをバインドする
              Me.DdlBumonMei.DataBind()

              ' 取得した部門コードをテキストボックスに設定する
              Me.LblBumonCode.Text = _
                  Me.DdlBumonMei.SelectedItem.Value

          Catch ex As Exception
              ' 例外が発生した時の処理
              LblMessage.Text = ex.ToString

          End Try

        End If

    End Sub

    '------------------------------------------------------
    ' 現在選択中の部門名と異なる部門名を選択した時の処理
    '------------------------------------------------------
    Private Sub DdlBumonMei_SelectedIndexChanged _
    (ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles DdlBumonMei.SelectedIndexChanged

        ' 新たに選択した部門コードをテキストボックスに設定
        Me.LblBumonCode.Text = Me.DdlBumonMei.SelectedItem.Value

    End Sub

End Class