.NET TIPS [ASP.NET]GridView+ObjectDataSourceコントロールでファイル一覧を作成するには?[2.0、3.0、3.5、C#、VB]山田 祥寛2010/03/04 |
|
|
ASP.NETでは、さまざまなデータソース・コントロールが提供されている。SQL ServerをはじめとしたデータベースにアクセスするためのSqlDataSourceコントロール、XML文書へのアクセス/変換に特化したXmlDataSourceコントロール、サイトマップ・ファイルへのアクセスに特化したSiteMapDataSourceコントロールなどは、利用する機会も多いはずだ。ASP.NET 3.5ではLINQ to SQLとの連動に特化したLinqDataSourceコントロール、さらに.NET Framework 3.5 SP1ではEntity Frameworkとの連動を意図したEntityDataSourceコントロールなども追加された。
あまたあるこれらデータソース・コントロールを利用することで、.aspxファイルでは必要最小限のコードでデータベースなどのデータソースと連携できる。そして、これらデータソース・コントロールの中でも秀でて柔軟性に優れ、さまざまな用途に利用できるのがObjectDataSourceコントロールだ。
ObjectDataSourceコントロールは、名前のとおり、ビジネス・オブジェクト経由で取得したデータをバインドするためのコントロールだ。SqlDataSourceコントロールでは賄えない、ビジネス・ロジックを伴うデータベース・アクセスの用途に利用できるほか、そもそも、既存のデータソース・コントロールでは対応していないデータソースを扱う用途にも利用できる。
本稿では、ObjectDataSourceコントロールを利用する一例として、ファイル・システム上の特定フォルダに含まれるファイルをオブジェクト経由で読み込み、その結果をGridViewコントロールに展開する方法について紹介する。
以下は、本稿で作成するサンプルの実行例だ。
カレント・フォルダに含まれるファイルの一覧をグリッド表として整形 |
それではさっそく、具体的な手順を追っていこう。
1. データアクセス・クラスを作成する
ObjectDataSourceコントロールを利用するには、まずデータソースへのアクセスを担当するデータアクセス・クラスを作成しておく必要がある。作成したデータアクセス・クラスは、アプリケーション・ルート直下のApp_Codeフォルダに保存すること。
|
||
ファイル・システム上のフォルダを読み込むためのデータアクセス・クラス(上:File.cs/下:File.vb) |
データアクセス・クラスでは、データソースの内容を操作するためにSELECT/UPDATE/INSERT/DELETE用のメソッド(データ・メソッド)を指定できる。データ・メソッドは、必ずしもすべての種類を指定する必要はない。例えば、本稿ではデータの取得のみを行いたいので、SELECTメソッドだけを定義している。
なお、データ・メソッドの引数/戻り値には、それぞれ特定のルールがあるので要注意だ。データ・メソッドに要求される条件をまとめておく。
種類 | 条件 |
SELECT | 戻り値としてDataSet/ArrayListのようなコレクションを返すこと |
UPDATE | 引数として更新値を表すオブジェクト、または、更新値を表す個々の値を受け取ること |
INSERT | 引数として挿入値を表すオブジェクト、または、挿入値を表す個々の値を受け取ること |
DELETE | 引数として削除時のキーを格納したオブジェクト、または削除キーを表す値を受け取ること |
データ・メソッドの条件 |
Fileクラスでは、SELECTメソッドとして「カレント・フォルダの内容をList<File>オブジェクトとして返すGetFilesメソッド」を、DELETEメソッドとして「指定されたFileオブジェクトに対応するファイルを削除するDelete」メソッドを、それぞれ定義しているわけだ。
また、リストの太字部分にも注目してほしい。
DataObjectMethod属性(System.ComponentModel名前空間)は、データ・メソッドの種類を宣言するものだ。例えばリストでは、
[DataObjectMethod(DataObjectMethodType.Select, true)] |
のように宣言されているので(C#の場合)、対応するメソッドがSELECT/DELETE用途のメソッドであることを表す。第2引数のtrueは、メソッドがデフォルトのSELECT/DELETEメソッドであることを示す。
DataObjectMethod属性は必須ではないが、明示的に指定しておくことで、後述するデータソース構成ウィザードでも対応するメソッドが自動的に認識されるようになる。コードの可読性を高めるという意味でも、通常は省略せずにきちんと宣言するのが望ましい。
2. グリッド表を作成する
データアクセス・クラスが用意できたら、あとはこれを.aspxファイルから呼び出してみよう。新規のWebフォーム(FileList.aspx)を作成し、以下の画面のようにGridViewコントロールを配置する。
FileList.aspxのフォーム・レイアウト | |||
以下のコントロールを配置する。 | |||
|
GridViewコントロールを配置したら、コントロール右肩のタスク・メニューから[データソースの選択]−[<新しいデータソース>]を選択する。データソース構成ウィザードが起動するので、以下の要領で設定を進めていこう。
[データ ソース構成ウィザード]の[データソースの種類を選びます。]ページ | ||||||
以下の手順を実行後に[OK]ボタンをクリックする。 | ||||||
|
ObjectDataSourceコントロールを利用するには、データソースの種類として「オブジェクト」を選択する。
[データ ソース構成ウィザード]の[ビジネス オブジェクトの選択]ページ | |||
以下の手順を実行後に[次へ]ボタンをクリックする。 | |||
|
次に、使用するビジネス・オブジェクト(データアクセス・クラス)を聞かれるので、先ほど作成した「File」を選択しておく。あとはデータの取得や削除のために、それぞれ対応するデータ・メソッドを指定するだけだ。
[データメソッドの定義]ダイアログ |
[完了]ボタンをクリックする。 |
データアクセス・クラスでDataObjectMethod属性が宣言されている場合、[SELECT][DELETE]タブには、それぞれ対応するメソッドが自動で認識されているはずだ。タブを切り替えて、意図したメソッド(GetFiles/Deleteメソッド)が選択されていることを確認しておこう。
3. GridViewコントロールのプロパティを設定する
データ構成ウィザードを終了したら、GridViewコントロールのタスク・メニューから[削除を有効にする]にチェックを入れる。グリッド表に[削除]リンクが追加されるはずだ。また、プロパティ・ウィンドウからDataKeyNamesプロパティに「Name」と設定しておこう。DataKeyNamesプロパティはデータソースのキーを表すものだ。この値が設定されていないと、削除時にキー(この場合はファイル名)が渡されず、正しくファイルを削除できないので注意されたい。
以上でデータアクセス・クラスをGridViewコントロールにバインドするための手順は完了だ。サンプルを実行して、カレント・フォルダの内容が以下のようにグリッド表示されていれば成功である。[削除]ボタンをクリックすることで、ファイルの削除が行えることも確認しておこう。
利用可能バージョン:.NET Framework 2.0 利用可能バージョン:.NET Framework 3.0 利用可能バージョン:.NET Framework 3.5 カテゴリ:Webフォーム 処理対象:GridViewコントロール 使用ライブラリ:GridViewコントロール 使用ライブラリ:ObjectDataSourceコントロール 使用ライブラリ:DataObjectMethod属性(System.ComponentModel名前空間) |
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|