Web版ListBoxからコード取得 [VB.NET]

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

ListBox DataAdapter.Fill

リストボックス(ListBox)に表示した部門名を選択すると、部門名の部門コードを取得できるWeb版のサンプルプログラムです。

MDB版:サンプルプログラム

ListBox

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

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

sample.mdbをプロジェクトフォルダのbinフォルダに置きます。

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

Imports System.Data.OleDb

Public Class WebListBox
  Inherits System.Web.UI.Page

  Protected WithEvents _
      ListBox1 As System.Web.UI.WebControls.ListBox
  Protected WithEvents _
      Label1 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 New DataSet()

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

                ' DB接続文字列の設定
                con.ConnectionString = _
                "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" & path & "\sample.mdb"

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

                ' DB接続を開く
                con.Open()

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

                ' データを取得する 
                da.SelectCommand = cmd
                da.Fill(ds, "部門テーブル")

                ' リストボックスに部門名を表示する設定
                Me.ListBox1.DataTextField = "部門名"

                ' 部門名に対応した部門コードを取得する設定
                Me.ListBox1.DataValueField = "部門コード"

                ' リストボックスにDataSetを連結
                Me.ListBox1.DataSource = ds
                Me.ListBox1.DataBind()

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

            Finally
                ' DB接続を閉じる
                If Not con Is Nothing Then
                    con.Close()
                End If
            End Try

        End If

    End Sub

    '----------------------------------------------------------
    ' 選択した部門名の部門コードを取得
    '----------------------------------------------------------
    Private Sub ListBox1_SelectedIndexChanged _
        (ByVal sender As System.Object, _
        ByVal e As System.EventArgs) _
        Handles ListBox1.SelectedIndexChanged

        Me.LblBumonCode.Text = Me.ListBox1.SelectedItem.Value

    End Sub

End Class