DataGridにDataReaderをバインドするには
● DataGridにDataReaderをバインドするサンプル

図 DataGridにDataReaderをバインドするサンプル
このサンプルは、DataGridにDataReaderを生成してバインドしています。DataGridのAutoGenerateColumnsプロパティにTrueを設定してDataReaderのカラムを自動生成させています。
このサンプルでは、以下のノウハウを習得することができます。
▲ DataReaderを生成する方法
▲ DataGridにDataReaderをバインドする方法
このサンプルでは、OleDbConnection, OleDbCommandクラスを使用してAccess/SQL ServerのtblVsDotNetテーブルを読み込んでOleDbDataReaderを生成します。行13では、tblVsDotNetテーブルからレコードを抽出するSQLを生成しています。行14では、Web.configに登録されているデータベースの接続情報を取得しています。行15では、OleDbConnectionのインスタンスを生成しています。OleDbConnectionの引数には、データベースの接続情報を指定します。行16では、OleDbCommandのインスタンスを生成しています。OleDbCommandの引数には、SQLコマンドとOleDbConnectionを指定します。
行18では、OleDbConnectionのOpen()メソッドでデータベースを開いています。行19-22のWith…End Withでは、DataGridの各種プロパティを設定してOleDbDataReaderをバインドしています。行20では、OleDbCommandのExecuteReader()メソッドでSQLのSelectステートメントを実行してOleDbDataReaderを生成してDataGridのDataSourceプロパティに設定しています。ExecuteReader()メソッドの引数に、CommandBehavior.CloseConnectionを指定すると、OleDbDataReaderが解放されるときにデータベースが自動的に閉じられます。行21では、DataGridのDataBind()メソッドでOleDbDataReaderをバインドしています。これで、OleDbDataReaderのすべてのカラムが自動生成されてDataGridに表示されます。
12: Sub BindData()
13: Dim strSQL as String =
"Select * From tblVsDotNet"
14: Dim strCon as String =
ConfigurationSettings.AppSettings("conStringNw")
15: Dim con As OleDbConnection = New
OleDbConnection(strCon)
16: Dim cmd As OleDbCommand = New
OleDbCommand(strSQL, con)
18: con.Open()
19: With dgrdVsNet
20: .DataSource =
cmd.ExecuteReader(CommandBehavior.CloseConnection)
21: .DataBind()
22: End With
23: End Sub
Tip
|
DataReaderをクラス化してDataGridにバインドするには DataReaderをクラス化するには、レコードを格納するVisualStudioクラスとレコード郡を格納するVisualStudioCollectionクラスを作成します。VisualStudioCollectionは、ArrayListのサブクラスとして作成します。ArrayListのサブクラスとして作成するには、行7のようにInherits ArrayListのように記述します。これでVisualStudioCollectionは、ArrayListをベースに作成されますのでArrayListがサポートしているすべてのプロパティとメソッドが使用できます。 6: Public Class VisualStudioCollection レコードを格納するVisualStudioクラスには、カラムのプロパティLongNameとShortNameを追加します。 13: Public Class VisualStudio VisualStudioMethodsクラスには、GetLanguages()メソッドがサポートされています。このメソッドは、Access/SQL ServerのtblVsDotNetテーブルからレコードを抽出してVisualStudioCollectionに格納して返します。 41: Public Class VisualStudioMethods GetLanguages()メソッドで取得したVisualStudioCollectionをDataGridにバインドするには、行69のように記述します。行70のDataBind()メソッドで、VisualStudioCollectionに格納されているレコードが表示されます。このようにDataReaderをクラス化することにより、N-Tire対応のWebアプリケーションを開発することができます。Webアプリケーションをプレゼンテーションレイヤー(Presentation Layer)とデータアクセスレイヤー(Data Access Layer)に分離することにより保守性がよくなります。たとえば、データベースをSQL ServerからOracleに移行する場合、Data Access LayerをOracle用に入れ換えるだけでPresentation Layerは変更する必要がありません。 なお、ここで紹介したVisualStudio, VisualStudioCollection, VisualStudioMethodsのクラスは、コンパイルしてDLL化してWebアプリケーションのbinディレクトリに格納しておきます。この場合、ASPXファイルからは、<%@ Import Namespace=”MyVisualStudio” %>のように記述してインポートします。 67: Sub BindData() |