連載:Visual Studio 2005でいってみようDBプログラミング

第10回 実践アプリケーションで一歩踏み込むASP.NET 2.0の世界

山田 祥寛(http://www.wings.msn.to/
2006/11/29
Page1 Page2 Page3 Page4

 ここまで9回にわたってVisual Studio 2005(以降、VS 2005)を利用したデータベース・プログラミングの基本について紹介してきました。VS 2005(および.NET Framework)を利用することで、従来のプログラミングに比べると、はるかに少ないコード量で高度な機能を実現できることが理解できたのではないかと思います。

 もっとも、ここまでに紹介してきたのは、比較的単発的なアプリケーションばかりでしたので、なかなか具体的なアプリケーション構築のイメージがつかみにくかったかもしれません。そこで今回から2回にわたって、ちょっと複雑な「掲示板アプリケーション」を作成してみることにします。

今回作成するサンプル・プログラムのダウンロード(vs2005db_10.zip)

 この掲示板アプリケーションの動作イメージ(画面遷移)は以下のとおりです。


図1 掲示板アプリケーションの概要

 また、本サンプル・アプリケーションを動作させるに当たっては、データベース上にあらかじめ以下のようなBbsテーブル(記事情報)を定義しておく必要があります。

フィールド名 データ型 概要
id INT 投稿コード(主キー/自動連番)
subject VARCHAR(255) 記事の件名
nam VARCHAR(50) 投稿者名
body VARCHAR(MAX) 記事の本文
passwd VARCHAR(15) 削除用パスワード
deleted BIT 削除済みか
parent INT 親の投稿コード(親がない場合は0)
last_modified DATETIME 投稿日時
表1 Bbsテーブルのフィールド・レイアウト

スレッド一覧画面を作成する − マスタ・ページとページング可能なTreeViewの実装

 まずは掲示板に投稿された一連の記事(Bbsテーブルの内容)を、TreeViewコントロールを利用してツリー形式で表示してみることにしましょう。また、投稿数が多くなってきた場合に備えて、最上位記事(親を持たない記事)5件ごとにページングする機能も実装してみます。

 さっそく、以下に具体的な手順を見ていきます。

[1]マスタ・ページを新規作成する

 マスタ・ページはASP.NET 2.0で追加された新機能の1つで、サイト共通のヘッダ/フッタ、サイド・メニューなどのレイアウトを定義します。

 本サンプル・アプリケーションのように複数ページにまたがるようなアプリケーションを作成する場合には、共通レイアウト部分をマスタ・ページとして定義しておくことで、個別のコンテンツ・ページで重複して共通部分を記述する必要がなくなるので、ページの記述がシンプルになりますし、レイアウト変更時にも容易に対応ができます(マスタ・ページに関する詳細は、拙稿「.NET TIPS:[ASP.NET]サイト共通のヘッダ/フッタを一元管理するには?」も参照してください)。

 マスタ・ページを作成するには、ソリューション・エクスプローラからアプリケーション・ルートを右クリックし、表示されたコンテキスト・メニューから[新しい項目の追加]を選択します。

 [新しい項目の追加]ダイアログが表示されますので、必要な情報を表2の要領で入力/選択したうえで[追加]ボタンをクリックします。

項目 入力値
テンプレート マスタページ
名前 BbsMaster.master
言語 Visual Basic
別のファイルにコードを書き込む チェックしない
マスタページを選択する チェックしない
表2 マスタ・ページ追加時の[新しい項目の追加]ダイアログの入力項目

 マスタ・ページを新規作成した場合、デフォルトでContentPlaceHolderコントロールが配置されているはずです。ContentPlaceHolderコントロールは、その名のとおり、個別のコンテンツを埋め込むためのプレイスホルダ(置き場所)を表します。マスタ・ページには最低限1つ以上のContentPlaceHolderコントロールを配置する必要があります。

 ContentPlaceHolderコントロールを削除しないようにしながら、図2の要領でサーバ・コントロールを配置します。


図2 マスタ・ページ「BbsMaster.master」のフォーム・レイアウト
  自動作成されるContentPlaceHolderコントロール。
  Imageコントロール(img)を配置。
  HyperLinkコントロール(link)を配置。

 また、それぞれのコントロールに対して、表3の要領でプロパティを設定しておきます。

コントロール プロパティ 設定値
DOCUMENT Title 掲示板アプリケーション
Image ImageUrl http://www.wings.msn.to/image/wings.jpg
HyperLink NavigateUrl ~/BbsShow.aspx
Text 新規投稿
表3 BbsMaster.masterのプロパティ設定

[2]Webフォーム「Bbs.aspx」を新規に作成する

 これまで何度も行ってきた「.aspx」ファイルの新規作成ですが、マスタ・ページを適用する場合には、[新しい項目の追加]ダイアログで[マスタ ページを選択する]にチェックする必要がある点に注意してください。

 本項目にチェックを入れた場合、さらに[マスタ ページを選択してください]ダイアログが表示されますので、ここでは先ほど作成した「BbsMaster.master」を選択し、[OK]ボタンをクリックします。



[マスタ ページを選択する]をチェックし[追加]ボタンをクリック


図3 新規Webフォームへのマスタ ページの適用
[マスタ ページを選択する]欄をチェックした場合、[マスタ ページを選択してください]ダイアログから適用するマスタ・ページを選択する必要がある。


 INDEX
  Visual Studio 2005でいってみようDBプログラミング
  第10回 実践アプリケーションで一歩踏み込むASP.NET 2.0の世界
  1.スレッド一覧画面を作成する(1)
    2.スレッド一覧画面を作成する(2)
    3.個別記事表示/返信/投稿画面を作成する(1)
    4.個別記事表示/返信/投稿画面を作成する(2)
 
インデックス・ページヘ  「Visual Studio 2005でいってみようDBプログラミング」


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間