ASP.NET + Oracle Part2 のホームへ戻る

DataListに複数の列を表示する

 

DataListDataReaderをバインドして複数の列を表示します。

 

DataListSuppliers表を複数列で表示する (ch43DataList1.aspx)

 

OracleデータベースのSuppliers表をDataListに3列で表示します。このサンプルでは、以下のノウハウを習得することができます。

 

DataListDataReaderをバインドする方法

DataListを複数列で表示する方法

DataListオブジェクトのRepeatColumnsRepeatDirectionプロパティの使い方

 

1. Webフォーム追加

 

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

 

2. DataList作成

 

ツールボックスの[Webフォーム]から、DataListをドラッグ&ドロップします。デザイナにDataList1のオブジェクトが作成されます。DataList1のプロパティウィンドウからRepeatColumnsプロパティに「3」を設定します。RepeatDirectionプロパティには、[Horizontal]を設定します。

 

fig4-3-1

DataList1のプロパティウィンドウからRepeatColumnsRepeatDirectionプロパティ設定

 

3. HTMLビューに切り替え

 

デザイナの最下位に表示されている[HTML]タブをクリックして、HTMLビューに切り替えます。<asp:DataList1>...</asp:DataList1>の間に、以下のItemTemplateを追加します。

 

<asp:DataList id="DataList1" runat="server"・・・>

  <ItemTemplate>

    <%# Container.DataItem("SupplierID") %><BR>

    <%# Container.DataItem("CompanyName") %><BR>

    <%# Container.DataItem("ContactName") %><BR>

    <%# Container.DataItem("Phone") %><BR>

  </ItemTemplate>

</asp:DataList>

 

4. 自動フォーマット

 

HTMLビューの最下位に表示されている[デザイン]タブをクリックして、デザインビューに切り替えます。DataList1の右クリックから[自動フォーマット]を選択します。「自動フォーマット」が表示されたら、「スキームの選択」から[プロフェッショナル1]を選択して、[OK]をクリックします。

 

fig4-3-2

スキームの選択から[プロフェッショナル1]を選択

 

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

 

メニューバーから[表示][コード]を選択してコードビューに切り替えます。クラスモジュールの先頭に、以下の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

  Repeater1.DataSource = CreateDataReader("SupplierPackage.GetSuppliers")

  Repeater1.DataBind()

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

 

6. ブラウザに表示

 

ソリューションエクスプローラから[ch43DataList1]を右クリックしてブラウザに表示します。DataListSuppliers表が横方向に3列で表示されます。

 

fig4-3-3

Suppliers表が横方向に3列で表示される

 

■解説

 

DataList<ItemTemplate><AlternatingItemTemplate>で定義したデータを複数列で表示するには、DataListRepeatColumnsプロパティに列数を設定します。列を横方向に表示するには、RepeatDirectionプロパティに[Horizontal]を設定します。列を縦方向に表示するには、[Vertical]を設定します。

 

<asp:DataList id="DataList1" runat="server"

  RepeatColumns="列数"

  RepeatDirection={"Horizontal" |"Vertical"}

・・・>

 

 

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

cccHandles MyBase.Load

  Repeater1.DataSource = CreateDataReader("SupplierPackage.GetSuppliers")

  Repeater1.DataBind()

End Sub

 

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

 

DataListDataReaderをバインドして表示する方法を解説しましたが、DataListには編集機能もサポートされています。編集機能を使用するには、DataReaderの代わりにDataSetをバインドします。なお、DataListには、ページング機能が標準でサポートされていませんので、ページング機能を付加するにはアプリケーション側で独自に組み込む必要があります。

 

Webサイトに、DataListに編集機能を付加するサンプルとページング機能を付加するサンプルが公開されていますので興味のある方はご覧ください。

 

DataListにページング機能を付加するサンプル

http://www.friendlysw.com/samples/articles/deny/030528-9.aspx

http://www.friendlysw.com/samples/articles/deny/030914-2.aspx

 

DataListに編集機能を付加するサンプル

http://www.friendlysw.com/samples/articles/deny/030528-8.aspx

http://www.friendlysw.com/samples/articles/deny/030529-5.aspx

 

ASP.NET + Oracle Part2 のホームへ戻る