DataListに複数の列を表示する
DataListにDataReaderをバインドして複数の列を表示します。
●DataListにSuppliers表を複数列で表示する (ch43DataList1.aspx)
OracleデータベースのSuppliers表をDataListに3列で表示します。このサンプルでは、以下のノウハウを習得することができます。
▼DataListにDataReaderをバインドする方法
▼DataListを複数列で表示する方法
▼DataListオブジェクトのRepeatColumns、RepeatDirectionプロパティの使い方
1. Webフォーム追加
ソリューションエクスプローラからフォルダ[ch4]を右クリックして、新規Webフォーム「ch43DataList1」を追加します。
2. DataList作成
ツールボックスの[Webフォーム]から、DataListをドラッグ&ドロップします。デザイナにDataList1のオブジェクトが作成されます。DataList1のプロパティウィンドウからRepeatColumnsプロパティに「3」を設定します。RepeatDirectionプロパティには、[Horizontal]を設定します。

図 DataList1のプロパティウィンドウからRepeatColumns、RepeatDirectionプロパティ設定
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]をクリックします。

図 スキームの選択から[プロフェッショナル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)
Handles 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]を右クリックしてブラウザに表示します。DataListにSuppliers表が横方向に3列で表示されます。

図 Suppliers表が横方向に3列で表示される
■解説
DataListの<ItemTemplate>、<AlternatingItemTemplate>で定義したデータを複数列で表示するには、DataListのRepeatColumnsプロパティに列数を設定します。列を横方向に表示するには、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)
Handles 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
DataListにDataReaderをバインドして表示する方法を解説しましたが、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