ASP.NET + Oracle (Part1) のホームへ戻る

●デフォルトのアイテムを追加する (ch23DropDownList1.aspx)

 

DropDownListの先頭に「--選択してください--」のアイテムを追加して表示します。このサンプルでは、以下のノウハウを習得することができます。

 

DropDownListの先頭にアイテムを追加する方法

DropDownListItemsコレクションのInsertメソッドの使い方

▼特定のアイテムを選択したときアイテムを無効とする方法

 

1. VS.NET起動

 

VS.NETを起動してプロジェクトvboraを開きます。

 

2. Webフォーム追加

 

ソリューションエクスプローラからフォルダ[ch2]を右クリックして、新規Webフォーム「ch23DropDownList1.aspx」を追加します。

 

3. DropDownList作成

 

ツールボックスの[Webフォーム]から、DropDownListをドラッグ&ドロップします。デザイナにDropDownList1のオブジェクトが作成されます。DropDownList1のプロパティウィンドウからAutoPostBackプロパティにTrueを設定します。

 

カーソルをDropDownList1の直後に移動したら、[Enter]キーを押して改行します。ツールボックスの[Webフォーム]からLabelをドラッグ&ドロップします。デザイナにLabel1のオブジェクトが作成されます。Label1のプロパティウィンドウからTextプロパティの値を消去して空白にします。

 

4. コードビューに切り替え

 

デザイナの空白の領域をダブルクリックして、コードビューに切り替えます。コードビューに切り替わったら、クラスモジュールの先頭に、以下のImportsステートメントを追加します。

 

Imports Oracle.DataAccess.Client

Imports Oracle.DataAccess.Types

 

Page_Loadイベントに、以下のコードを追加します。

 

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)

cccHandles MyBase.Load

  If Not IsPostBack Then

    With DropDownList1

      .DataSource = CreateDataReader("RegionPackage.GetRegions")

      .DataTextField = "KEN"

      .DataValueField = "KENKANA"

      .DataBind()

      .Items.Insert(0, New ListItem("--選択してください--", ""))

    End With

  End If

End Sub

 

コードビュー左上の「クラス名」のドロップダウンリストから[DropDownList1]を選択したら、右上の「メソッド名」のドロップダウンリストから[SelectedIndexChanged]を選択します。DropDownList1_SelectedIndexChangedイベントが生成されたら、以下のコードを追加します。

 

Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object,

cccByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged

  If Not DropDownList1.SelectedItem.Value = String.Empty Then

    Label1.Text = String.Format("{0} ({1})", _

      DropDownList1.SelectedItem.Text, _

      DropDownList1.SelectedItem.Value)

  End If

End Sub

 

クラスモジュールの最後に、Function CreateDataReaderを追加します。

 

Private Function CreateDataReader(ByVal strPackage As String) As OracleDataReader

  Dim con As New OracleConnection( ConfigurationSettings.AppSettings("conStringOraNw"))

  Dim cmd As New OracleCommand(strPackage, con)

  cmd.CommandType = CommandType.StoredProcedure

  con.Open()

  cmd.Parameters.Add("1", OracleDbType.RefCursor, ParameterDirection.Output)

  Return cmd.ExecuteReader(CommandBehavior.CloseConnection)

End Function

 

 

5. ブラウザに表示

 

ソリューションエクスプローラから[ch23DropDownList1.aspx]を右クリックしてブラウザに表示します。DropDownListの先頭にヘルプ情報「--選択してください--」が表示されます。

 

 

fig2-3-1

DropDownListの先頭にヘルプ情報が表示される

 

■解説

 

DropDownListに「--選択してください--」のようなヘルプ情報を表示するには、ItemsコレクションのInsertメソッドを使用します。Insertメソッドの引数には、インデックス番号とListItemのオブジェクトを指定します。インデックス番号には0から始まる数値を指定します。DropDownListの先頭に挿入するには、インデックス番号0を指定します。ListItemの引数には、Text/Valueを指定します。

 

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)

cccHandles MyBase.Load

  If Not IsPostBack Then

    With DropDownList1

      .DataSource = CreateDataReader("RegionPackage.GetRegions")

      .DataTextField = "KEN"

      .DataValueField = "KENKANA"

      .DataBind()

      .Items.Insert(0, New ListItem("--選択してください--", ""))

    End With

  End If

End Sub

 

DropDownListからヘルプ情報「--選択してください--」を選択したときに無効にするには、SelectedItem.Valueプロパティを調べます。ValueプロパティがEmptyのときは、ヘルプ情報を選択していますので、選択を無効にします。

 

Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object,

cccByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged

  If Not DropDownList1.SelectedItem.Value = String.Empty Then

    Label1.Text = String.Format("{0} ({1})", _

      DropDownList1.SelectedItem.Text, _

      DropDownList1.SelectedItem.Value)

  End If

End Sub

 

ASP.NET + Oracle (Part1) のホームへ戻る